Sobes.tech
Junior — Middle

Obyekt yoki resursni to'g'ri tarzda yo'q qilish uchun qanday qadamlar bajarilishi kerak?

sobes.tech AI

AIdan javob

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 йўқ қилинди")
    }
}

Шу тарзда, тўғри йўқ қилиш ресурсларни озод қилишни кафолатлайди ва хотира оқибатларини олдини олади.