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

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