Junior — Middle
Por que é recomendado usar uma referência fraca a si mesmo (weak self) no código que utiliza closures?
sobes.tech IA
Resposta da IA
A utilização de referências fracas (weak self) em closures é necessária para evitar ciclos de referências fortes ( ciclos de retenção), que levam a vazamentos de memória.
Quando um closure captura self como uma referência forte, e self contém esse closure (por exemplo, numa propriedade), eles mantêm-se mutuamente, e nenhum dos objetos é libertado.
Exemplo de uso de uma referência fraca:
someAsyncCall { [weak self] in
guard let self = self else { return }
self.doSomething()
}
Aqui, self é capturado fracamente, portanto, se o objeto self for destruído antes da execução do closure, este não o manterá na memória, prevenindo assim uma fuga.