コード (Playground)
import Cocoa
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
weak var workItem: DispatchWorkItem?
if true {
let item = DispatchWorkItem() { Swift.print("delayed job") }
DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: item)
workItem = item
}
Swift.debugPrint(workItem as Any)
結果
nil
delayed job
対策
DispatchWorkItemを強参照で保持する。
または、ブロックを使用する。
DispatchQueue.main.asyncAfter(deadline: .now() + 1) { Swift.print("delayed job") }