Sobes.tech
Junior — Middle

Aké kroky je potrebné podniknúť na správne ukončenie destrukcie objektu alebo zdroja?

sobes.tech AI

Odpoveď od AI

Pre správne zničenie objektu alebo uvoľnenie zdrojov v iOS je potrebné vykonať nasledujúce kroky:

  1. Uvoľniť súvisiace zdroje — napríklad zatvoriť súbory, zastaviť časovače, zrušiť sieťové požiadavky.
  2. Odstrániť pozorovateľov a oznámenia — ak je objekt prihlásený na oznámenia alebo KVO, je potrebné sa odhlásiť, aby sa predišlo únikom pamäte.
  3. Nulovať silné odkazy — ak existujú cyklické odkazy, je potrebné ich preraziť, aby ARC mohol uvoľniť pamäť.
  4. Vykonať čistenie v metóde deinit — vo Swift je destruktor deinit používaný na vykonanie záverečných akcií pred zničením objektu.

Príklad:

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() {
        // spracovanie
    }

    deinit {
        timer?.invalidate()
        NotificationCenter.default.removeObserver(self)
        print("MyResource bol zničený")
    }
}

Týmto spôsobom správne zničenie zabezpečuje uvoľnenie zdrojov a zabraňuje únikom pamäte.