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 жок кылынды")
}
}
Ушул жол менен туура жок кылуу ресурстарды бошотуп, эс тутум агып кетүүнүн алдын алат.