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.