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.