Junior — Middle
Tətbiqlərdə yaddaş sızıntılarının yaranmasına nə səbəb olur?
sobes.tech Süni İntellekt
AI-dan cavab
Proqramlardakı yaddaş sızıntıları, obyektlər və ya məlumatlar üçün ayrılmış yaddaş lazım olduqda sərbəst buraxılmadıqda baş verir. iOS-da bu, tez-tez:
- Obyektlər arasında referans dövrləri (saxlama dövrləri) ilə əlaqəlidir, xüsusən ARC (Avtomatik Referans Sayımı) istifadə edilərkən. Məsələn, iki obyekt bir-birinə güclü referanslarla müraciət edərsə, onlar sərbəst buraxılmır.
- Self-i güclü referansla tutan closures-in düzgün istifadə edilməməsi.
- Timerlər, müşahidəçilər və ya fayl deskriptorları kimi resursların sərbəst buraxılmaması.
Closure ilə saxlanma dövrü nümunəsi:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = {
print(self) // self güclü şəkildə tutulur, dövr yaranır
}
}
}
Sızıntıları qarşısını almaq üçün, closures-də zəif (weak) və ya mülkiyyət olmayan (unowned) referanslar istifadə olunur və obyektlərin həyat dövrü düzgün idarə edilir.