Junior — Middle
Koje korake treba preduzeti za pravilno završavanje destrukcije objekta ili resursa?
sobes.tech АИ
Одговор од АИ
За правилно уништавање објекта или ослобађање ресурса у 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 уништен")
}
}
На овај начин, правилно уништавање обезбеђује ослобађање ресурса и спречава цурење меморије.