Junior — Middle
İdarə olunan mühitlərdə döngəli istinadlara malik obyektlərin yaddaşı necə azad edilir?
sobes.tech Süni İntellekt
AI-dan cavab
İdarə olunan mühitlərdə, məsələn, iOS ARC (Avtomatik Referans Sayımı) ilə, döngəli referanslara malik obyektlərin yaddaşdan azad olunması avtomatik baş vermir, çünki ARC referans döngələrini qıra bilmir.
Bu problemi həll etmək üçün, zəif (weak) və sahibsiz (unowned) referanslar istifadə olunur, bunlar obyektin referans sayını artırmır. Bu, döngələri qırmağa və yaddaşı düzgün şəkildə azad etməyə imkan verir.
Nümunə:
class Person {
var name: String
weak var apartment: Apartment? // zəif referans
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person // sahibsiz referans
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
Burada, Person və Apartment bir-birinə istinad edir, amma bir referans zəifdir, bu da yaddaş sızmalarını qarşısını alır.
Əgər referans döngələri qırılmazsa, obyektlər xarici referanslar olmasa da yaddaşda qalacaq və yaddaş sızmalarına səbəb olacaq.