注意:这不是重复的问题,我已经看过Dispatch group - cannot notify to main thread
DispatchWorkItem
没有回答我的代码如下
let dwi3 = DispatchWorkItem {
print("start DispatchWorkItem \(Thread.isMainThread)")
sleep(2)
print("end DispatchWorkItem")
}
let myDq = DispatchQueue(label: "A custom dispatch queue")
dwi3.notify(queue: myDq) {
print("notify")
}
DispatchQueue.global().async(execute: dwi3)
哪个工作正常(我可以在控制台上看到通知)而不是主线程启动DispatchWorkItem false
启动DispatchWorkItem false
结束DispatchWorkItem
通知
现在我尝试使用
通知主线程dwi3.notify(queue: DispatchQueue.main) {
print("notify")
}
但它永远不会调用,我已阅读并发现如果Thread被阻止则会出现情况。但我已在DisptachWorkItem
DispatchQueue.global()
请有人可以帮我解决实际情况吗?
答案 0 :(得分:2)
如果您在游乐场中运行异步代码,则需要启用无限期执行,否则执行可能会在回调执行之前结束。
将以下行添加到操场中的代码中:
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
执行此操作后,您将看到通知在主队列上正确执行。