Sobes.tech
Junior — Middle

Какви стъпки трябва да се предприемат за правилното унищожаване на обект или ресурс?

sobes.tech AI

Отговор от AI

За правилното унищожаване на обект или освобождаване на ресурси в 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 деинициализиран")
    }
}

По този начин правилното унищожаване гарантира освобождаването на ресурси и предотвратява течове на памет.