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:
- Uvoľniť súvisiace zdroje — napríklad zatvoriť súbory, zastaviť časovače, zrušiť sieťové požiadavky.
- 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.
- Nulovať silné odkazy — ak existujú cyklické odkazy, je potrebné ich preraziť, aby ARC mohol uvoľniť pamäť.
- Vykonať čistenie v metóde
deinit— vo Swift je destruktordeinitpouží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.