Sobes.tech
Junior — Middle

Quando é apropriado usar uma referência fraca com 'weak let'?

sobes.tech IA

Resposta da IA

A referência fraca com weak let em Swift é usada para evitar ciclos de referências fortes ( ciclos de retenção), especialmente em closures e delegados. É adequada quando o objeto ao qual se faz referência pode ser desreferenciado, e você não quer mantê-lo na memória.

Por exemplo, numa closure que captura self, para evitar fugas de memória, faz-se uma referência fraca:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            guard let self = self else { return }
            self.doSomething()
        }
    }

    func doSomething() {
        print("Ação")
    }
}

Aqui, weak impede de reter self na closure, permitindo que o ViewController seja libertado da memória quando já não for necessário.