Cómo hacer una referencia débil a un protocolo en Swift puro (sin @objc)
¡Hola a todos! Soy nuevo en Swift y me encontré con un problema al implementar el patrón delegado.
Tengo un protocolo `MyDelegate` y una clase `ViewController` que debería ser el delegado de otra clase `Service`. Quiero que la propiedad `delegate` en `Service` sea una referencia débil (weak) para evitar un ciclo de referencias fuertes y fugas de memoria.
Aquí está mi código:
```swift
protocol MyDelegate {
func didSomething()
}
class Service {
weak var delegate: MyDelegate? // Error: 'weak' cannot be applied to non-class type 'MyDelegate'
func performTask() {
delegate?.didSomething()
}
}
class ViewController: MyDelegate {
func didSomething() {
print("¡Trabajo completado!")
}
}
```
Xcode muestra el error: `'weak' cannot be applied to non-class type 'MyDelegate'`. Entiendo que `weak` solo funciona con tipos de referencia (clases), pero los protocolos pueden ser adoptados tanto por clases como por estructuras.
¿Cómo puedo hacer correctamente una referencia débil a un protocolo?
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Clean Code en TypeScript: principios y ejemplos para principiantes
Cliente HTTP en TypeScript: haciendo solicitudes correctamente de la A a la Z
Generic en Kotlin: cómo dejar de temer a los corchetes angulares y escribir código limpio
TypeScript: Guía completa de preparación para entrevistas