Sobes.tech
Junior — Middle

Yadda yaddaş idarəsində dövri əlaqələrdən necə qurtulmaq olar, sızmaların qarşısını almaq üçün?

sobes.tech Süni İntellekt

AI-dan cavab

Dairəvi əlaqələr, iki və ya daha çox obyekt bir-birinə müraciət etdikdə baş verir və bu, xüsusən də istinad sayımı istifadə edilərkən avtomatik yaddaşın sərbəst buraxılmasını çətinləşdirir.

iOS-da (Objective-C/Swift), dairəvi əlaqələrdən yaranan yaddaş sızıntılarını qarşısını almaq üçün aşağıdakı metodlar istifadə olunur:

  • Zəif əlaqələr (weak) — istinad sayğacını artırmır, obyekt silindikdə avtomatik olaraq nil-ə çevrilir.
  • Müəyyən olmayan əlaqələr (unowned) — sayğacı artırmır, lakin nil-ə çevrilmir və obyektin mütləq mövcud olduğu hallarda istifadə olunur.

Məsələn, Swift-də:

class A {
    var b: B?
}

class B {
    weak var a: A?  // dairəni pozmaq üçün zəif əlaqə
}

weak və ya unowned istifadə etmək dairəni qırır, ARC obyektləri düzgün şəkildə sərbəst buraxmağa imkan verir və yaddaş sızıntılarını qarşısını alır.