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 განადგურდა")
    }
}

ამ გზით, სწორი განადგურება უზრუნველყოფს რესურსების გათავისუფლებას და მეხსიერების ნაკადების თავიდან აცილებას.