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.