Junior
O que é um vazamento de memória e como ele ocorre?
sobes.tech IA
Resposta da IA
Um vazamento de memória é uma situação em que um programa aloca memória para objetos, mas após eles deixarem de ser necessários, as referências a eles não são removidas, e o coletor de lixo não consegue liberar essa memória. No iOS, onde é utilizado ARC (Contagem Automática de Referências), vazamentos de memória frequentemente ocorrem devido a referências cíclicas, por exemplo, quando dois objetos referenciam-se mutuamente através de referências fortes, e nenhum deles é liberado.
Exemplo de referência cíclica em Swift:
class A {
var b: B?
}
class B {
var a: A?
}
let a = A()
let b = B()
a.b = b
b.a = a
// Ambos os objetos referenciam-se mutuamente, o ARC não consegue liberá-los automaticamente
Para evitar vazamentos, usam-se referências fracas (weak) ou sem proprietário (unowned), que não aumentam o contador de referências e permitem liberar os objetos corretamente.