Sobes.tech
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ə, parentchild istifadə olunmadıqda, yaddaş düzgün şəkildə azad edilir, dövrələr və yaddaş sızmalarından qaçınılır.