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.