Junior — Middle
Swift-də bağlamada weak self istifadə etməyin lazım olduğu hallara misal göstərə bilərsinizmi? Döngəvi istinadların qarşısını almaq üçün.
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də dövrü referans, obyektin özünü bağlayan bir bağlama ilə tutması və bu bağlamanın eyni obyektə saxlanması zamanı baş verir, bu da qarşılıqlı saxlanmaya və yaddaş sızmasına səbəb olur. Bunu qarşısını almaq üçün weak self istifadə olunur.
Nümunə: sizdə ViewController sinfi var və bu, asinxron əməliyyatı bağlama ilə başlatır. Əgər bağlamada self birbaşa istifadə olunarsa, ViewController bağlama tərəfindən tutulur və bağlamadan sonra sərbəst buraxılmır.
class ViewController: UIViewController {
func fetchData() {
networkRequest { [weak self] data in
guard let self = self else { return }
self.updateUI(with: data)
}
}
func updateUI(with data: Data) {
// interfeysi yeniləyin
}
}
Burada, weak self güclü dövrü referansı qarşısını alır, çünki bağlama self-i zəif tutaraq obyekti tutmur və onun sərbəst buraxılmasına imkan verir.