Peut-on créer une référence faible à une propriété qui implémente un protocole?
sobes.tech IA
Réponse de l'IA
En Swift, il n'est pas possible de créer une référence faible (weak) à une propriété qui implémente un protocole si ce protocole n'est pas limité aux classes (protocole réservé aux classes). Cela est dû au fait que les références faibles ne peuvent être appliquées qu'aux types de référence (classes), et les protocoles peuvent être implémentés aussi bien par des classes que par des structures ou des énumérations.
Pour utiliser une référence weak à une propriété de type protocole, il faut limiter le protocole en héritant de AnyObject, par exemple :
protocol MyProtocol: AnyObject {
func doSomething()
}
class MyClass: MyProtocol {
func doSomething() {
print("Faire quelque chose")
}
}
class AnotherClass {
weak var delegate: MyProtocol?
}
Si le protocole n'est pas limité à AnyObject, il n'est pas possible de créer une référence weak, et il faudra utiliser des références fortes ou d'autres mécanismes de gestion de mémoire.