Sobes.tech
Junior — Middle

Tətbiqlərinizdə yaddaş sızıntılarını necə aşkarlayıb və aradan qaldırırsınız?

sobes.tech Süni İntellekt

AI-dan cavab

iOS tətbiqlərində yaddaş sızıntılarını aşkar etmək üçün adətən Instruments ilə Leaks və Allocations profilindən istifadə edirəm.

  1. Uygulamayı Instruments vasitəsilə işə salıram və real vaxtda sızıntıların olub-olmadığını yoxlayıram.
  2. Bağlanmayan obyektləri və onların tutma zəncirlərini (retaining cycles) analiz edirəm.
  3. Tez-tez, obyektlər və ya bağlamalar arasında güclü dövri əlaqələr səbəbindən sızıntılar baş verir, ona görə də weak və unowned istinadların istifadəsini yoxlayıram.

Bağlamada retention cycle-ni aradan qaldırmaq nümunəsi:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            self?.doSomething()
        }
    }

    func doSomething() {
        print("Əməliyyat")
    }
}

Burada, [weak self] istifadəsi obyekt və bağlama arasında güclü tutma dövrünü qarşısını alır.

Həmçinin, Xcode-un statik analizatorundan (Product -> Analyze) istifadə etmək yaddaş problemlərini aşkar etmək üçün faydalıdır.