Sobes.tech
Junior — Middle

Pode explicar o que significa usar uma referência fraca a self em closures?

sobes.tech IA

Resposta da IA

A utilização de uma referência fraca (weak reference) a self em closures no iOS (Swift) ajuda a evitar ciclos de retenção (retain cycles), que levam a fugas de memória. Quando um closure captura self como uma referência forte, e self contém esse closure, eles mantêm-se mutuamente, e a memória não é libertada.

Exemplo:

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

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

    func doSomething() {
        print("Action")
    }
}

Aqui, [weak self] significa que dentro do closure, self será uma referência fraca, e se o objeto for destruído, a referência tornará nil, prevenindo a fuga de memória.