给出以下代码(在Swift 4的操场上,XCode 10.1),在我们将DispatchWorkItem发送完后,我们取消了DispatchWorkItem,
你好
取消
按预期工作
let item : DispatchWorkItem = DispatchWorkItem {
print ("Hello")
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0, execute: item)
DispatchQueue.main.asyncAfter(deadline: .now() + 2.1) {
item.cancel()
print("cancel")
}
但是我不明白的是,当我使用 Sleep 命令执行该操作时,它仍然无法工作
不起作用吗?该项目一直被取消。
let item : DispatchWorkItem = DispatchWorkItem {
print ("Hello")
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0, execute: item)
sleep(3)
item.cancel()
print("cancel")
输出
取消
为什么会发生?