DispatchWorkItem睡眠后取消

时间:2018-12-03 08:44:46

标签: ios swift

给出以下代码(在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")

输出

取消

为什么会发生?

0 个答案:

没有答案