class Increment {
var number = 0
init(){
print(#function)
}
deinit {
print(#function)
}
// let incrementNumber would give an error — 1
lazy var incrementNumber: (Int) -> () = { [weak self] value in
self?.number += value
print(self?.number)
}
}
do {
let increment = Increment().incrementNumber(3)
}
// output
init()
deinit
nil
如果我分隔这行,那么当执行闭包时,self
仍然是活动的.
let increment = Increment()
increment.incrementNumber(3)
// output
init()
Optional(3)
deinit
有没有人能解释一下,为什么在incrementNumber()
呼叫之前,Increment
人得到了提示?