Ты понимаешь deinit()
неправильно. Когда вы отклоняете View
, это не обязательно означает, что он будет звонить deinit()
, как вы думаете. Однако если ваш ViewModel
был уничтожен, он вызвал бы deinit()
, как вы ожидаете.
Чтобы продемонстрировать это, вот класс Person
со свойством name, простой инициализатор и метод printGreeting()
, который печатает сообщение:
class Person {
var name = "John Doe"
init() {
print("\(name) is alive!")
}
func printGreeting() {
print("Hello, I'm \(name)")
}
}
Мы собираемся создать несколько экземпляров класса Person
внутри al oop, потому что каждый раз, когда l oop обходит, создается новый человек затем уничтожено:
for _ in 1...3 {
let person = Person()
person.printGreeting()
}
А теперь для деинициализатора. Это будет вызвано, когда экземпляр Person
будет уничтожен :
deinit {
print("\(name) is no more!")
}
Источник: https://www.hackingwithswift.com/sixty/8/6/deinitializers