Junior — Middle
Se poate crea o referință slabă către o proprietate care implementează un protocol?
sobes.tech AI
Răspuns de la AI
În Swift, nu se poate crea o referință weak (slabă) la o proprietate care implementează un protocol dacă acest protocol nu este limitat la clase (protocol doar pentru clase). Acest lucru se datorează faptului că referințele weak pot fi aplicate doar tipurilor de referință (clase), în timp ce protocoalele pot fi implementate atât de clase, cât și de structuri sau enumerări.
Pentru a utiliza o referință weak la o proprietate de tip protocol, trebuie să restricționați protocolul prin moștenirea de la AnyObject, de exemplu:
protocol MyProtocol: AnyObject {
func doSomething()
}
class MyClass: MyProtocol {
func doSomething() {
print("Fac ceva")
}
}
class AnotherClass {
weak var delegate: MyProtocol?
}
Dacă protocolul nu este limitat la AnyObject, nu se poate crea o referință weak, și va trebui să folosiți referințe puternice sau alte mecanisme de gestionare a memoriei.