Junior — Middle
Yadda yaddaş döngələrini qarşısını almaq üçün obyekt modelində əlaqələri düzgün təşkil etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
iOS-da obyekt modeli daxilində dövr edən yaddaş sızmasının qarşısını almaq üçün (Swift və ya Objective-C istifadə edərək), güclü (strong), zəif (weak) və sahibsiz (unowned) istinadların düzgün istifadəsi vacibdir.
Əsas fikir:
- strong — mülkiyyət edən istinad, obyektin istinad sayını artırır.
- weak — mülkiyyət etməyən istinad, sayını artırmır, obyekt silindiyi zaman avtomatik olaraq nil-ə çevrilir.
- unowned — mülkiyyət etməyən istinad, sayını artırmır, lakin nil-ə çevrilmir, obyektin daha uzun müddət yaşaması təmin olunduqda istifadə olunur.
Tez-tez dövrələr yaranır, məsələn, valideyn və övlad arasında və ya nümayəndə və obyekt arasında. Dövrələri qarşısını almaq üçün:
- Valideyn övladını strong ilə saxlayır.
- Övlad valideynə weak və ya unowned vasitəsilə istinad edir.
Swift-də nümunə:
class Parent {
var child: Child?
}
class Child {
weak var parent: Parent? // dövrəni qarşısını almaq üçün zəif istinad
}
let parent = Parent()
let child = Child()
parent.child = child
child.parent = parent
Bu şəkildə, parent və child istifadə olunmadıqda, yaddaş düzgün şəkildə azad edilir, dövrələr və yaddaş sızmalarından qaçınılır.