Sobes.tech
Junior — Middle

Объект же ресурстун туура жоюу үчүн кайсы кадамдар жасалышы керек?

sobes.tech AI

AIден жооп

iOS-да объекттин туура жоголушу же ресурстарды бошотуу үчүн төмөнкү кадамдарды аткаруу керек:

  1. Тийиштүү ресурстарды бошотуу — мисалы, файлдарды жабуу, таймерлерди токтотуу, тармактык суроолорду жокко чыгаруу.
  2. Көзөмөлчүлөрдү жана кабарламаларды алып салуу — эгер объект кабарламаларга же KVOга жазылса, ал жерден чыгуу керек, ошондо эс тутум агып кетүүнүн алдын алууга болот.
  3. Күчтүү шилтемелерди нөлгө коюу — эгер циклик шилтемелер болсо, аларды үзүү керек, ошондо ARC эс тутумду бошотуп кете алат.
  4. 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 жок кылынды")
    }
}

Ушул жол менен туура жок кылуу ресурстарды бошотуп, эс тутум агып кетүүнүн алдын алат.