Sobes.tech
Middle — Middle+

Yadda yaddaş idarə olunan proqramlaşdırma dillərində istinadların saxlanma dövrü başlanır?

sobes.tech Süni İntellekt

AI-dan cavab

Swift və ya iOS-də Objective-C kimi avtomatik yaddaş idarəetmə dillərində, retention cycle (saxlama döngüsü) iki və ya daha çox obyektin güclü referanslar vasitəsilə bir-birini saxlaması zamanı baş verir; bu, çöp toplayıcı və ya ARC (Avtomatik Referans Sayımı) bu obyektləri sərbəst buraxa bilməz.

Retention cycle, məsələn, A obyekti B obyektinə güclü referans saxlayırsa və B obyekti də A obyektinə güclü referans saxlayırsa, baş verir. Bu, hər iki obyektin referans sayğaclarının heç vaxt sıfıra çatmamasına səbəb olur.

Belə döngələri qarşısını almaq üçün:

  • Zəif referanslar (weak) — referans sayğacını artırmır və obyekt silindikdə avtomatik olaraq nil-ə təyin olunur.
  • Müəyyən olmayan referanslar (unowned) — sayğacı artırmır, lakin avtomatik olaraq nil-ə təyin olunmur və obyekt daha uzun müddət mövcud olacağına zəmanət verildikdə istifadə olunur.

Nümunə:

class Person {
    var apartment: Apartment?
}

class Apartment {
    weak var tenant: Person?  // döngünü qarşısını almaq üçün zəif referans
}

Beləliklə, retention cycle qarşılıqlı güclü referanslar vasitəsilə başlanır və zəif və ya unowned referanslar istifadə edilərək döngü kəsilir.