Middle
Cum se creează o referință slabă la o variabilă de tip protocol în Swift?
sobes.tech AI
Răspuns de la AI
Este necesar să folosiți cuvântul cheie weak înainte de declararea unei variabile de tip protocol. Protocolul trebuie declarat astfel încât să poată fi aplicat doar claselor: fie moștenind de la AnyObject, fie folosind cuvântul cheie class.
Exemplu cu moștenire de la AnyObject:
protocol MyDelegate: AnyObject {
func doSomething()
}
class MyClass {
weak var delegate: MyDelegate?
}
Exemplu cu cuvântul cheie class:
protocol AnotherDelegate: class { // Varianta până la Swift 4.1
func doSomethingElse()
}
// În versiunile moderne de Swift (>= 4.1), este suficient să moștenești de la `AnyObject`
Utilizarea weak previne ciclurile de referințe puternice, de exemplu în delegare, unde un obiect proprietar face referire la delegat, iar acesta din urmă face referire înapoi la proprietar (sau o structură similară). O referință slabă nu crește contorul de referințe al obiectului.