Junior — Middle
Milliseid samme tuleks järgida objekti või ressursi õige hävitamise lõpetamiseks?
sobes.tech AI
Vastus AI-lt
Selleks, et õigesti objekt hävitada või ressursid vabastada iOS-is, tuleb järgida järgmisi samme:
- Seotud ressursid vabastada — näiteks sulgeda failid, peatada ajastajad, tühistada võrgupäringud.
- Jälgijate ja teavituste eemaldamine — kui objekt on tellitud teavitustele või KVO-le, tuleb sellest loobuda, et vältida mälulekkeid.
- Tugevate viidete nullimine — kui on tsüklilisi viiteid, need katkestada, et ARC saaks mälu vabastada.
- Puhastust teha
deinitmeetodis — Swiftis kasutataksedeinitdestruktorit viimaste toimingute tegemiseks enne objekti hävitamist.
Näide:
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() {
// töötlemine
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource hävitatud")
}
}
Korralik hävitamine tagab ressursside vabastamise ja mälulekkide vältimise.