Sobes.tech
Junior — Middle

O que é perda de memória alocada e como ela pode ocorrer numa aplicação?

sobes.tech IA

Resposta da IA

A perda de memória (memory leak) numa aplicação iOS é uma situação em que a aplicação continua a manter referências a objetos que já não são necessários, o que impede a libertação da memória e, com o tempo, consome mais recursos.

Causas:

  • Ciclos de referências (retain cycles) entre objetos, especialmente ao usar ARC (Contagem Automática de Referências).
  • Uso de closures com captura de self sem referências fracas (weak/self).
  • Gestão incorreta de recursos, por exemplo, não libertar delegados.

Exemplo de ciclo de retenção com closure:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = {
            print(self) // captura de self sem weak
        }
    }
}

Para evitar, deve-se usar [weak self]:

closure = { [weak self] in
    guard let self = self else { return }
    print(self)
}

A análise regular com as ferramentas do Xcode (Instruments — Leaks) ajuda a identificar e eliminar fugas de memória.