Junior — Middle
Obyekt yoki resursni to'g'ri tarzda yo'q qilish uchun qanday qadamlar bajarilishi kerak?
sobes.tech AI
AIdan javob
iOSда объектни тўғри йўқ қилиш ёки ресурсларни озод қилиш учун қуйидаги қадамлар бажарилиши керак:
- Байланышли ресурсларни озод қилиш — масалан, файлларни ёпиш, таймерларни тўхтатиш, тармоқ сўровларини бекор қилиш.
- Кўрсатувчилар ва хабарномаларни олиб ташлаш — агар объект хабарномалар ёки KVOга ёзилган бўлса, улардан чиқиш керак, шунингдек, ётқизишлардан сақланиш учун.
- Қувватли ҳаволаларни нуллга ўрнатиш — агар циклли ҳаволалар бўлса, уларни бузиш керак, шунда ARC хотирани озод қила олади.
deinitметодида тозалаш — Swiftда,deinitйўқ қилишчи объект ўлдирилишидан олдин охирги ҳаракатларни бажариш учун ишлатилади.
Масалан:
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() {
// ишлов бериш
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource йўқ қилинди")
}
}
Шу тарзда, тўғри йўқ қилиш ресурсларни озод қилишни кафолатлайди ва хотира оқибатларини олдини олади.