Junior — Middle
Tem alguma prática para identificar e eliminar fugas de memória nas aplicações?
sobes.tech IA
Resposta da IA
Sim, na prática de desenvolvimento de aplicações iOS, já enfrentei a deteção e resolução de fugas de memória. Para isso, uso ferramentas do Xcode, como Instruments com o profiler Leaks e Allocations.
O processo geralmente inclui:
- Executar a aplicação através do Instruments e monitorar o uso de memória.
- Procurar objetos que não são libertados após o uso (fugas).
- Analisar o código para identificar referências fortes, ciclos de retenção (retain cycles), especialmente em closures e delegados.
- Utilizar referências fracas (weak) e não possuídas (unowned) para quebrar ciclos.
Por exemplo, se numa closure, self é capturado sem uma referência fraca, isso pode levar a uma fuga:
class ViewController {
var closure: (() -> Void)?
func setup() {
closure = { [weak self] in
self?.doSomething()
}
}
func doSomething() {
print("Ação")
}
}
Esta abordagem ajuda a evitar ciclos de retenção e fugas de memória.