Junior — Middle
Swift-də zəif istinad (weak var) istifadə etmək üçün hansı vəziyyətlər daha uyğundur?
sobes.tech Süni İntellekt
AI-dan cavab
Swift-də zəif istinadlar (weak var), güclü istinad dövrlərini (retain cycles) qarşısını almaq üçün istifadə olunur; bu dövrlər yaddaş sızmalarına səbəb olur. Aşağıdakı vəziyyətlərdə zəif istinadların istifadəsi tövsiyə olunur:
- Ob'ekt A, ob'ekt B-yə istinad edirsə və ob'ekt B də geri ob'ekt A-ya istinad edirsə və bu istinadlardan biri zəif olmalıdırsa, dövrü qarşısını almaq üçün.
- Delegatlar (delegates) zamanı, burada delegate adətən weak kimi elan edilir, beləliklə delegate ob'ekti yaddaşda saxlanmır.
Nümunə:
class ViewController: UIViewController {
var timer: Timer?
func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
self?.updateUI()
}
}
func updateUI() {
// interfeysi yeniləmə
}
}
Burada, self zəif istinad kimi tutulur, beləliklə timer və controller arasında retain dövrü qarşısı alınır.