Sobes.tech
Junior — Middle

O que causa vazamentos de memória em aplicações?

sobes.tech IA

Resposta da IA

Fugas de memória em aplicações ocorrem quando a memória alocada para objetos ou dados não é libertada após deixarem de ser necessários. No iOS, isto está frequentemente relacionado com:

  • Ciclos de referências entre objetos (ciclos de retenção), especialmente ao usar ARC (Contagem Automática de Referências). Por exemplo, quando dois objetos referenciam-se mutuamente com referências fortes, eles não são libertados.
  • Uso incorreto de closures, que capturam self com uma referência forte.
  • Não libertar recursos como temporizadores, observadores ou descritores de ficheiros.

Exemplo de ciclo de retenção com closure:

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

    func setup() {
        closure = {
            print(self) // self é capturado fortemente, criando um ciclo
        }
    }
}

Para evitar fugas, usam-se referências fracas (weak) ou não possuídas (unowned) em closures e garante-se uma gestão correta do ciclo de vida dos objetos.