Sobes.tech
Junior — Middle

Tətbiqlərdə yaddaş sızıntılarını aşkar etmək və aradan qaldırmaq təcrübəniz varmı?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, iOS tətbiqlərinin inkişafı praktikasında yaddaş sızıntılarını aşkar etmək və aradan qaldırmaqla üzləşmişəm. Bunu etmək üçün Xcode alətlərindən, xüsusən Leaks və Allocations profiler ilə Instruments-dan istifadə edirəm.

Proses adətən aşağıdakıları əhatə edir:

  • Instruments vasitəsilə tətbiqi işə salmaq və yaddaş istifadəsini izləmək.
  • İstifadədən sonra sərbəst buraxılmayan obyektləri (sızıntıları) tapmaq.
  • Kodun analizini aparmaq, güclü istinadlar, tutma döngüləri (retain cycles), xüsusən bağlamalar və nümayəndələrdə müəyyən etmək.
  • Döngüləri qırmaq üçün zəif (weak) və sahibsiz (unowned) istinadlardan istifadə etmək.

Məsələn, bağlamada, self zəif istinad olmadan tutulursa, bu, sızıntıya səbəb ola bilər:

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

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

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

Bu yanaşma, tutma döngülərini və yaddaş sızıntılarını qarşısını almağa kömək edir.