Sobes.tech
Junior — Middle

Jaké kroky je třeba podniknout, aby v paměti vznikl cyklus udržení (Retain Cycle)?

sobes.tech AI

Odpověď od AI

Cyklus udržení (Retain Cycle) v iOS nastává, když si dva nebo více objektů navzájem drží silné odkazy, což brání jejich uvolnění z paměti a způsobuje únik.

Pro vznik cyklu udržení jsou potřeba následující kroky:

  1. Objekt A obsahuje silnou referenci na objekt B.
  2. Objekt B obsahuje silnou referenci na objekt A.
  3. Žádný z objektů není uvolněn, protože čítač odkazů nedosahuje nuly.

Příklad:

class A {
    var b: B?
}

class B {
    var a: A?
}

let a = A()
let b = B()
a.b = b
b.a = a // Cyklus udržení

Aby se předešlo cyklu, jedna z referencí je nastavena jako slabá (weak) nebo bez vlastnictví (unowned). Například:

class B {
    weak var a: A?
}

Tímto způsobem vzniká cyklus udržení, když jsou přítomny vzájemné silné odkazy bez přerušení, což blokuje uvolnění objektů.