Junior — Middle
Quais passos devem ser tomados para que ocorra um ciclo de retenção (Retain Cycle) na memória?
sobes.tech IA
Resposta da IA
O ciclo de retenção (Retain Cycle) no iOS ocorre quando dois ou mais objetos mantêm-se mutuamente através de referências fortes, impedindo que sejam libertados da memória, causando uma fuga.
Para que um ciclo de retenção aconteça, são necessários os seguintes passos:
- O objeto A contém uma referência forte ao objeto B.
- O objeto B contém uma referência forte ao objeto A.
- Nenhum dos objetos é libertado, pois o contador de referências não atinge zero.
Exemplo:
class A {
var b: B?
}
class B {
var a: A?
}
let a = A()
let b = B()
a.b = b
b.a = a // Ciclo de retenção
Para evitar o ciclo, uma das referências é tornada fraca (weak) ou sem proprietário (unowned). Por exemplo:
class B {
weak var a: A?
}
Assim, o ciclo de retenção ocorre quando há referências fortes mútuas sem ruptura, o que bloqueia a libertação dos objetos.