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 ոչնչացվեց")
    }
}

Այսպիսով, ճիշտ ոչնչացումը ապահովում է ռեսուրսների ազատումը և կանխում հիշողության լիքները։