Sobes.tech
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.