Sobes.tech
Junior — Middle

Koje korake treba preduzeti za pravilno završavanje destrukcije objekta ili resursa?

sobes.tech АИ

Одговор од АИ

За правилно уништавање објекта или ослобађање ресурса у iOS-у, следеће кораке треба извршити:

  1. Освободити повезане ресурсе — на пример, затворити датотеке, зауставити таймере, отказати мрежне захтеве.
  2. Уклонити посматраче и обавештења — ако је објекат претплаћен на обавештења или KVO, потребно је одјавити се како би се избегли цурења меморије.
  3. Нултирати јаке референце — ако постоје циклусне референце, прекинути их како би ARC могао ослободити меморију.
  4. Извршити чишћење у методу 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 уништен")
    }
}

На овај начин, правилно уништавање обезбеђује ослобађање ресурса и спречава цурење меморије.