Cómo hacer una referencia débil a un protocolo en Swift puro (sin @objc)
¡Hola a todos! Estoy aprendiendo Swift y tratando de implementar el patrón delegado, pero me encontré con un problema de fuga de memoria. Tengo un protocolo:
```swift
protocol MyDelegate: class {
func didSomething()
}
class MyClass {
var delegate: MyDelegate?
func doSomething() {
delegate?.didSomething()
}
}
```
Sé que en Objective-C se podía usar `weak` para protocolos marcados con `@objc`. Pero quiero escribir en Swift puro. Cuando intento hacer:
```swift
weak var delegate: MyDelegate?
```
El compilador da un error: `'weak' may only be applied to class and class-bound protocol types`. Leí que necesito heredar el protocolo de `AnyObject` o usar `class` en la definición del protocolo. Pero no entiendo completamente cómo funciona esto y cuál es la diferencia.
Mi pregunta principal: ¿cómo declarar correctamente un protocolo para poder usar `weak` en la propiedad delegada y así evitar un retain cycle? Quiero que el delegado pueda ser de cualquier tipo (clase