Junior — Middle
Jaké kroky je třeba podniknout k správnému ukončení destrukce objektu nebo zdroje?
sobes.tech AI
Odpověď od AI
Pro správné zničení objektu nebo uvolnění zdrojů v iOS je třeba provést následující kroky:
- Uvolnit souvisejné zdroje — například zavřít soubory, zastavit časovače, zrušit síťové požadavky.
- Odstranit pozorovatele a oznámení — pokud je objekt přihlášen k oznámením nebo KVO, je třeba se odhlásit, aby nedocházelo ke únikům paměti.
- Nulovat silné odkazy — pokud existují cyklické odkazy, je třeba je přerušit, aby ARC mohl uvolnit paměť.
- Proveďte čištění v metodě
deinit— ve Swift je destruktordeinitpoužíván k provedení závěrečných akcí před zničením objektu.
Pří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() {
// zpracování
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource byl zničen")
}
}
Tímto způsobem správné zničení zajišťuje uvolnění zdrojů a zabraňuje únikům paměti.