Sobes.tech
Junior — Middle

Avtomatik yaddaş idarəetməsində çöp toplanmasını əngəlləyən dövr edən istinadların yaranması mümkündürmü?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, iOS-da avtomatik yaddaş idarəetməsi (ARC) istifadə edilərkən, döngüvi istinadlar (retain cycles) baş verə bilər. Bu, iki və ya daha çox obyektin bir-birini güclü istinadlar ilə saxlaması nəticəsində baş verir; bu zaman istinad sayğacı sıfıra çatmır və obyektlər sərbəst buraxılmır.

Belə halların qarşısını almaq üçün, zəif (weak) və ya sahibsiz (unowned) istinadlar istifadə olunur. Məsələn, nümayəndələr adətən weak kimi elan edilir ki, döngülər yaranmasın.

Nümunə:

class Person {
    var apartment: Apartment?
}

class Apartment {
    weak var tenant: Person?  // zəif istinad döngünü qarşısını alır
}

let john = Person()
let unit4A = Apartment()
john.apartment = unit4A
unit4A.tenant = john

Bu nümunədə, tenant zəif istinaddır, ona görə də döngü yaranmır və obyektlər düzgün şəkildə sərbəst buraxılır.