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.