Junior — Middle
Kokius žingsnius reikia atlikti, kad teisingai užbaigtumėte objekto ar ištekliaus sunaikinimą?
sobes.tech AI
Atsakymas iš AI
Norint teisingai sunaikinti objektą arba atlaisvinti išteklius iOS, reikia atlikti šiuos veiksmus:
- Susijusių išteklių atlaisvinimas — pavyzdžiui, uždaryti failus, sustabdyti laikmačius, atšaukti tinklo užklausas.
- Stebėtojų ir pranešimų pašalinimas — jei objektas yra užsiprenumeravęs pranešimus ar KVO, reikia atsisakyti, kad išvengtumėte atminties nutekėjimo.
- Stiprių nuorodų nulio nustatymas — jei yra ciklinės nuorodos, jas nutraukite, kad ARC galėtų laisvai atlaisvinti atmintį.
- Valymo atlikimas
deinitmetode — Swift'e,deinitnaudojamas atlikti paskutinius veiksmus prieš objekto sunaikinimą.
Pavyzdys:
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() {
// apdorojimas
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource sunaikintas")
}
}
Tinkamai sunaikinus, užtikrinama išteklių atlaisvinimas ir išvengiama atminties nutekėjimo.