Sobes.tech
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:

  1. Obraz A, obyekt B-yə güclü istinad saxlayır.
  2. Obraz B, obraz A-yə güclü istinad saxlayır.
  3. 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.