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.