Junior — Middle
¿Se puede crear una referencia débil a una propiedad que implementa un protocolo?
sobes.tech AI
Respuesta de la IA
En Swift, no se puede crear una referencia débil (weak) a una propiedad que implementa un protocolo si ese protocolo no está restringido a clases (protocolo solo para clases). Esto se debe a que las referencias débiles solo pueden aplicarse a tipos de referencia (clases), y los protocolos pueden ser implementados tanto por clases como por estructuras o enumeraciones.
Para usar una referencia weak a una propiedad con tipo de protocolo, es necesario restringir el protocolo mediante la herencia de AnyObject, por ejemplo:
protocol MyProtocol: AnyObject {
func doSomething()
}
class MyClass: MyProtocol {
func doSomething() {
print("Haciendo algo")
}
}
class AnotherClass {
weak var delegate: MyProtocol?
}
Si el protocolo no está restringido a AnyObject, no se puede crear una referencia weak, y será necesario usar referencias fuertes u otros mecanismos de gestión de memoria.