Sobes.tech
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.