Junior — Middle
Hansı hallarda və necə zəif istinadlar bağlamalar daxilində istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
iOS-da, bağlamalar (closures) ilə işləyərkən, tez-tez dövr edən referans problemi yaranır; obyekt bağlamanı ələ keçirir və bağlama obyekti ələ keçirir, bu da yaddaş sızmalarına səbəb olur. Bunu qarşısını almaq üçün, bağlamalar daxilində zəif referanslar (weak references) istifadə olunur.
Zəif referans obyektin referans sayğacını artırmır, buna görə də güclü referanslar yoxdursa, obyekt sərbəst buraxıla bilər.
Zəif referansın bağlamada istifadəsinə nümunə:
class ViewController {
var completionHandler: (() -> Void)?
func setup() {
completionHandler = { [weak self] in
guard let self = self else { return }
self.doSomething()
}
}
func doSomething() {
print("Əməliyyat yerinə yetirildi")
}
}
İstifadə halları:
- Bağlama self və ya digər obyektləri ələ keçirərək, saxlanma dövrünü (retain cycle) qarşısını almaq üçün.
- Asinxron əməliyyatlarda, obyekt bağlamanın icrasından əvvəl məhv edilə bilər.
Zəif referansların istifadəsi yaddaşı idarə etməyə və sızmaları qarşısını almağa kömək edir.