Sobes.tech
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.