1
我想弄清楚如何捕獲在Swift中關閉工作。Swift如何在Swift中捕獲變量?
假設下面的代碼示例
class Worker {
let block:() -> Void
let id: String
init(id: String, block: @escaping () -> Void) {
self.id = id
self.block = block
}
}
var worker: Worker!
worker = Worker(id: "1", block: { _ in
print(worker.id)
})
在正在創建倒閉,工人變量仍然是零的時刻。但是,閉包將成功捕獲worker變量。
這是如何工作的?閉包如何保持對尚未初始化的變量的強引用?
比較https://stackoverflow.com/q/43171341/2976878 – Hamish
請注意,在您的示例中,'worker' *是初始化的,它會隱式地初始化爲'nil'(然後您分配給它一個對一個新的「工人」實例)。 – Hamish
工人事實上已初始化,但稍後纔會進行初始化。在關閉創建的那一刻,工人仍然是零。 – itskoBits