Junior — Middle
Ce pași trebuie urmați pentru a genera un ciclu de retenție (Retain Cycle) în memorie?
sobes.tech AI
Răspuns de la AI
Ciclul de retenție (Retain Cycle) în iOS apare atunci când două sau mai multe obiecte se mențin reciproc prin referințe puternice, ceea ce împiedică eliberarea lor din memorie, cauzând o scurgere.
Pentru ca un ciclu de retenție să apară, sunt necesi următorii pași:
- Obiectul A conține o referință puternică către obiectul B.
- Obiectul B conține o referință puternică către obiectul A.
- Niciunul dintre obiecte nu este eliberat, deoarece contorul de referințe nu ajunge la zero.
Exemplu:
class A {
var b: B?
}
class B {
var a: A?
}
let a = A()
let b = B()
a.b = b
b.a = a // Ciclul de retenție
Pentru a evita ciclul, una dintre referințe este făcută slabă (weak) sau fără deținător (unowned). De exemplu:
class B {
weak var a: A?
}
Astfel, ciclul de retenție apare atunci când există referințe puternice reciproce fără întrerupere, ceea ce blochează eliberarea obiectelor.