Sobes.tech
Junior — Middle

¿Puedes explicar qué significa usar una referencia débil a self en los cierres?

sobes.tech AI

Respuesta de la IA

El uso de una referencia débil (weak reference) a self en los closures en iOS (Swift) ayuda a evitar ciclos de retención (retain cycles), que conducen a fugas de memoria. Cuando un closure captura a self como una referencia fuerte, y self contiene ese closure, ambos se mantienen mutuamente, y la memoria no se libera.

Ejemplo:

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

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

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

Aquí, [weak self] significa que dentro del closure, self será una referencia débil, y si el objeto es destruido, la referencia se volverá nil, previniendo la fuga de memoria.