Sobes.tech
Junior — Middle

Como detecta e corrige vazamentos de memória nas suas aplicações?

sobes.tech IA

Resposta da IA

Para detectar fugas de memória em aplicações iOS, geralmente uso as ferramentas do Xcode, como o Instruments com os perfis Leaks e Allocations.

  1. Executo a aplicação através do Instruments e verifico se surgem fugas em tempo real.
  2. Analiso os objetos que não são libertados e as suas cadeias de retenção (ciclos de retenção).
  3. Muitas vezes, as fugas ocorrem devido a referências cíclicas fortes, por exemplo, entre objetos ou closures, por isso verifico o uso de referências weak e unowned.

Exemplo de como eliminar um ciclo de retenção numa closure:

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

    func setup() {
        closure = { [weak self] in
            self?.doSomething()
        }
    }

    func doSomething() {
        print("Ação")
    }
}

Aqui, o uso de [weak self] impede um ciclo forte de retenção entre o objeto e a closure.

Também é útil usar o analisador estático do Xcode (Produto -> Analisar) para identificar potenciais problemas de memória.