Junior — Middle
Welke stappen moeten worden ondernomen om een Retain Cycle in het geheugen te veroorzaken?
sobes.tech AI
Antwoord van AI
De Retain Cycle (Vasthouden Cyclus) in iOS ontstaat wanneer twee of meer objecten elkaar vasthouden via sterke verwijzingen, waardoor ze niet uit het geheugen kunnen worden vrijgegeven, wat leidt tot een geheugenlek.
Voor het ontstaan van een Retain Cycle zijn de volgende stappen nodig:
- Object A bevat een sterke verwijzing naar object B.
- Object B bevat een sterke verwijzing naar object A.
- Geen van de objecten wordt vrijgegeven, omdat de referentieteller niet op nul komt.
Voorbeeld:
class A {
var b: B?
}
class B {
var a: A?
}
let a = A()
let b = B()
a.b = b
b.a = a // Retain Cycle
Om de cyclus te voorkomen, wordt een van de verwijzingen zwak (weak) of zonder eigenaar (unowned) gemaakt. Bijvoorbeeld:
class B {
weak var a: A?
}
Zo ontstaat de Retain Cycle wanneer er wederzijdse sterke verwijzingen zonder onderbreking zijn, wat het vrijgeven van de objecten blokkeert.