Avatar ·

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?