Sobes.tech
Junior — Middle

Closure-lərdə self-ə zəif istinadın nə demək olduğunu izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

iOS (Swift) içində closelarda self-ə zəif istinad (weak reference) istifadə etmək, tutma döngülərini (retain cycles) qarşısını almağa kömək edir, bu da yaddaş sızıntılarına səbəb olur. Bir closure, self-i güclü istinad kimi tutursa və self bu closure-u ehtiva edirsə, onlar bir-birini saxlayır və yaddaş sərbəst buraxılmır.

Nümunə:

class MyClass {
    var closure: (() -> Void)?

    func setup() {
        closure = { [weak self] in
            guard let self = self else { return }
            self.doSomething()
        }
    }

    func doSomething() {
        print("Action")
    }
}

Burada, [weak self] ifadəsi, closure daxilində self-in zəif istinad olacağını göstərir və obyekt məhv olunsa, istinad nil olacaq, bu da yaddaş sızıntısını qarşısını alır.