Junior — Middle
Swift'te zayıf referans (weak var) kullanmak hangi durumlarda daha uygundur?
sobes.tech yapay zeka
AI'dan gelen yanıt
Swift'te zayıf referanslar (weak var), güçlü referans döngülerini (retain cycles) önlemek için kullanılır; bu döngüler bellek sızıntılarına yol açar. Aşağıdaki durumlarda zayıf referansların kullanılması önerilir:
- Nesne A, nesne B'ye referans verir ve nesne B de geri nesne A'ya referans veriyorsa ve bu referanslardan biri zayıf olmalıysa, döngüyü önlemek için.
- Delegelerde (delegates), burada delege genellikle weak olarak ilan edilir, böylece delege nesnesi bellekte tutulmaz.
Örnek:
class ViewController: UIViewController {
var timer: Timer?
func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
self?.updateUI()
}
}
func updateUI() {
// arayüz güncellemesi
}
}
Burada, self zayıf referans olarak yakalanır, böylece zamanlayıcı ile denetleyici arasında retain döngüsü önlenir.