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