Sobes.tech
Junior — Middle

În ce situații este preferabil să folosiți o referință slabă (weak var) în Swift?

sobes.tech AI

Răspuns de la AI

Referințele slabe (weak var) în Swift sunt utilizate pentru a preveni ciclurile de referințe puternice (retain cycles), care duc la scurgeri de memorie. Se recomandă utilizarea referințelor slabe în următoarele situații:

  • Când obiectul A face referire la obiectul B, iar obiectul B face referire înapoi la obiectul A, și una dintre aceste referințe trebuie să fie slabă pentru a evita un ciclu.
  • În delegați (delegates), unde delegatul este de obicei declarat ca weak pentru a nu menține obiectul delegat în memorie.

Exemplu:

class ViewController: UIViewController {
    var timer: Timer?

    func startTimer() {
        timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
            self?.updateUI()
        }
    }

    func updateUI() {
        // actualizarea interfeței
    }
}

Aici, self este capturat ca o referință slabă pentru a evita un ciclu de retenție între timer și controler.