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

  1. Object A bevat een sterke verwijzing naar object B.
  2. Object B bevat een sterke verwijzing naar object A.
  3. 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.