【发布时间】:2021-02-14 22:02:21
【问题描述】:
例如在这个函数中,
func asyncAdd(_ input: (Int, Int),
runQueue: DispatchQueue = DispatchQueue.global(qos: .userInitiated),
completionQueue: DispatchQueue = DispatchQueue.main,
completion: @escaping (Result<Int, SlowAddError>) -> ()) {
runQueue.async {
let result = input.0 + input.1
completionQueue.async {
completion(result)
}
}
}
为什么completionQueue,主线程,必须是调用completion的地方。我们不能只在后台线程上调用完成吗?
【问题讨论】:
-
这取决于完成处理程序的实际作用。通常,当使用回调来修改 UI 时,您会看到这一点,而在 iOS 中,这只能从主线程完成
标签: swift concurrency