Sobes.tech
Junior — Middle

Milyen helyzetekben érdemes gyenge hivatkozást (weak var) használni Swiftben?

sobes.tech MI

Válasz az MI-től

A Swiftben a gyenge hivatkozások (weak var) használatosak az erős hivatkozási ciklusok (retain cycles) megelőzésére, amelyek memória szivárgáshoz vezetnek. Ajánlott gyenge hivatkozásokat alkalmazni a következő helyzetekben:

  • Amikor az A objektum az B objektumra hivatkozik, és a B objektum visszautal az A objektumra, és az egyik hivatkozásnak gyengének kell lennie a ciklus elkerülése érdekében.
  • Delegáltaknál (delegates), ahol a delegált általában weak-ként van deklarálva, hogy ne tartsa meg a delegált objektumot a memóriában.

Példa:

class ViewController: UIViewController {
    var timer: Timer?

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

    func updateUI() {
        // felület frissítése
    }
}

Itt a self gyenge hivatkozásként van rögzítve, hogy elkerüljük a retain ciklust a timer és a vezérlő között.