2

我正在尝试向 UIButton 添加异步执行/捕获/延迟操作。但是,如果我只是在 defer 块中调用一个方法,就会Call to main actor-isolated instance method XXX in a synchronous nonisolated context出错。我找到的解决方法是将其包装在另一个Task块中,如下所示。只是想检查这是否是正确的方法?如果有人可以解释该错误消息的实际含义,那就太好了。

@objc private func post(_ sender: UIButton) {
    Task {
        // defer { dismiss(animated: true) } -- Doesn't work
        defer { Task { await dismiss(animated: true) } }
        do {
            try await doSomethingAsync()
        } catch {
            print(error)
        }
    }
}
4

0 回答 0