Junior — Middle
Какви стъпки трябва да се предприемат за правилното унищожаване на обект или ресурс?
sobes.tech AI
Отговор от AI
За правилното унищожаване на обект или освобождаване на ресурси в iOS трябва да се изпълнят следните стъпки:
- Освободете свързаните ресурси — например, затворете файлове, спрете таймери, отменете мрежови заявки.
- Премахнете наблюдатели и известия — ако обектът е абониран за известия или KVO, трябва да се отпишете, за да избегнете течове.
- Нулувайте силните препратки — ако има циклични препратки, ги прекъснете, за да може ARC да освободи паметта.
- Извършете почистване в метода
deinit— в Swift, деструкторътdeinitсе използва за изпълнение на финални действия преди унищожаването на обекта.
Пример:
class MyResource {
var timer: Timer?
init() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
print("Tick")
}
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: .someNotification, object: nil)
}
@objc func handleNotification() {
// обработка
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource деинициализиран")
}
}
По този начин правилното унищожаване гарантира освобождаването на ресурси и предотвратява течове на памет.