Middle
Swift'te protokol türündeki bir değişkene zayıf referans nasıl oluşturulur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Protokol türü değişkeni bildiriminden önce weak anahtar kelimesinin kullanılması gerekir. Protokol, yalnızca sınıflara uygulanabilir olacak şekilde bildirilmelidir: ya AnyObject'ten kalıtım yoluyla ya da class anahtar kelimesi kullanılarak.
AnyObject kalıtımıyla örnek:
protocol MyDelegate: AnyObject {
func doSomething()
}
class MyClass {
weak var delegate: MyDelegate?
}
class anahtar kelimesiyle örnek:
protocol AnotherDelegate: class { // Swift 4.1'e kadar olan varyant
func doSomethingElse()
}
// Modern Swift sürümlerinde (>= 4.1) sadece `AnyObject`'ten kalıtım yeterlidir
weak kullanımı, örneğin delegasyon durumlarında, güçlü referans döngülerini önler; burada sahip nesne, delegesine referans verir ve delega da geri sahip nesneye (veya benzer yapıya) referans verir. Zayıf referans, nesnenin referans sayacını artırmaz.