Sobes.tech
Junior — Middle

¿En qué circunstancias se debe usar una referencia débil (weak) dentro de un cierre (closure)?

sobes.tech AI

Respuesta de la IA

Las referencias débiles (weak) dentro de los cierres en iOS se utilizan para prevenir ciclos de referencias fuertes (retains cycles), que pueden conducir a fugas de memoria. Esto suele ser relevante cuando un cierre captura un objeto (por ejemplo, self) y es retenido por ese objeto, creando una referencia fuerte mutua.

Utiliza weak para hacer referencia a self dentro del cierre si el cierre se almacena en una propiedad del objeto o puede vivir más tiempo que la llamada a la función, para evitar mantener el objeto en memoria después de que deba ser liberado.

Ejemplo en Swift:

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

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

    func doSomething() {
        print("Acción realizada")
    }
}

Aquí, [weak self] previene un ciclo fuerte entre ViewController y el cierre completion.