Junior — Middle
Барои анҷоми дурустии нобуд кардани объект ё манбаъ кадом қадамҳоро бояд гузаронд?
sobes.tech AI
Ҷавоб аз AI
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 йўқ қилинди")
}
}
Шу тарзда, тўғри йўқ қилиш ресурсларни озод қилишни кафолатлайди ва хотира оқибатларини олдини олади.