Junior — Middle
Yaddaşda Retain Cycle (Yaddaş Döngüsü) yaranması üçün hansı addımlar atılmalıdır?
sobes.tech Süni İntellekt
AI-dan cavab
iOS-də Retain Cycle (Yadda saxlanma döngüsü) iki və ya daha çox obyektin güclü istinadlar vasitəsilə bir-birini saxlaması zamanı baş verir və bu, yaddaşdan azad olunmalarını maneə törədir, yaddaş sızmasına səbəb olur.
Retain Cycle-in yaranması üçün aşağıdakı addımlar lazımdır:
- Obraz A, obyekt B-yə güclü istinad saxlayır.
- Obraz B, obraz A-yə güclü istinad saxlayır.
- Heç bir obyekt azad edilmir, çünki istinad sayğacı sıfıra çatmır.
Nümunə:
class A {
var b: B?
}
class B {
var a: A?
}
let a = A()
let b = B()
a.b = b
b.a = a // Yadda saxlanma döngüsü
Döngünü qarşısını almaq üçün, bir istinad zəif (weak) və ya sahibsiz (unowned) edilir. Məsələn:
class B {
weak var a: A?
}
Beləliklə, qarşılıqlı güclü istinadlar olmadan yadda saxlanma döngüsü yaranır və obyektlərin azad olunması bloklanır.