Middle
Swift-də protokol tipində dəyişənə zəif istinad necə yaradılır?
sobes.tech Süni İntellekt
AI-dan cavab
Protokol növü dəyişəninin elanından əvvəl weak açar sözünü istifadə etmək lazımdır. Protokol yalnızca siniflərə tətbiq oluna biləcək şəkildə elan edilməlidir: ya AnyObject-dən irs almaqla, ya da class açar sözü ilə.
AnyObject-dən irs alma ilə nümunə:
protocol MyDelegate: AnyObject {
func doSomething()
}
class MyClass {
weak var delegate: MyDelegate?
}
class açar sözü ilə nümunə:
protocol AnotherDelegate: class { // Swift 4.1-ə qədər variant
func doSomethingElse()
}
// Müasir Swift versiyalarında (>= 4.1) yalnız `AnyObject`-dən irs alma kifayətdir
weak istifadə etmək, məsələn, delegasiya hallarında, güclü istinad döngələrini qarşısını alır; burada sahibi obyekt, delegata istinad edir və bu da öz növbəsində sahibi obyektə (və ya oxşar struktura) istinad edir. Zəif istinad obyektin istinad sayğacını artırmır.