Junior — Middle
Como é que se podem eliminar referências circulares na gestão de memória para evitar fugas?
sobes.tech IA
Resposta da IA
Os links cíclicos ocorrem quando dois ou mais objetos referenciam-se mutuamente, o que impede a libertação automática de memória, especialmente ao usar contagem de referências.
No iOS (Objective-C/Swift), para evitar fugas devido a links cíclicos, usam-se:
- Referências fracas (
weak) — não aumentam o contador de referências, são automaticamente anuladas ao remover o objeto. - Referências não possuídas (
unowned) — não aumentam o contador, mas não são anuladas, usadas quando o objeto existe garantidamente.
Por exemplo, em Swift:
class A {
var b: B?
}
class B {
weak var a: A? // referência fraca para evitar ciclo
}
Usar weak ou unowned quebra o ciclo, permitindo ao ARC liberar corretamente os objetos e evitar fugas de memória.