Junior — Middle
Aké kroky je potrebné podniknúť, aby v pamäti vznikol cyklus udržiavania (Retain Cycle)?
sobes.tech AI
Odpoveď od AI
Cyklus udrži (Retain Cycle) v iOS nastáva, keď si dva alebo viac objektov navzájom držia silné odkazy, čo bráni ich uvoľneniu z pamäti a spôsobuje únik.
Pre vznik cyklu udrži je potrebné nasledovné:
- Objekt A obsahuje silnú referenciu na objekt B.
- Objekt B obsahuje silnú referenciu na objekt A.
- Žiadny z objektov nie je uvoľnený, pretože čítač odkazov nedosahuje nulu.
Prí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žiavania
Aby sa predišlo cyklu, jedna z referencií sa spraví slabou (weak) alebo bez vlastníka (unowned). Napríklad:
class B {
weak var a: A?
}
Takto vzniká cyklus udržiavania, keď sú prítomné vzájomné silné odkazy bez prerušenia, čo blokuje uvoľnenie objektov.