Не понимаю, почему компилятор делает ошибку в этом фрагменте кода
class Addr {
var num: Int = 0
lazy var increment: (Int) -> () = {[unowned self] value in
self.num += value
print(self.num)
}
deinit {
print("deinit")
}
}
do {
let object = Addr().increment(5) // ERROR
}
Конечно, я могу изменить в списке захвата [unowned self] на [слабое self], но я пытаюсь понять, почему этот код не работает. Почему объект является deinit перед вызовом имущества. Будем благодарны за подробное объяснение этого механизма.