Junior — Middle
Μπορείτε να εξηγήσετε τι σημαίνει η χρήση μιας αδύναμης αναφοράς στο self σε closures;
sobes.tech AI
Απάντηση από AI
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.