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.
- Executo a aplicação através do Instruments e verifico se surgem fugas em tempo real.
- Analiso os objetos que não são libertados e as suas cadeias de retenção (ciclos de retenção).
- 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.