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:
- Objekt A obsahuje silnou referenci na objekt B.
- Objekt B obsahuje silnou referenci na objekt A.
- Žá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ů.