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