我正在尝试向 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)
}
}
}