Sobes.tech
Junior — Middle

V jakých situacích je vhodnější použít slabé odkazování (weak var) ve Swiftu?

sobes.tech AI

Odpověď od AI

Slabé odkazy (weak var) v Swiftu se používají k prevenci cyklů silných odkazů (retain cycles), které vedou k únikům paměti. Doporučuje se používat slabé odkazy v následujících situacích:

  • Když objekt A odkazuje na objekt B a objekt B odkazuje zpět na objekt A, a jeden z těchto odkazů by měl být slabý, aby se předešlo cyklu.
  • U delegátů (delegates), kde je delegát obvykle deklarován jako weak, aby nezadržoval objekt delegáta v paměti.

Příklad:

class ViewController: UIViewController {
    var timer: Timer?

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

    func updateUI() {
        // aktualizace rozhraní
    }
}

Zde je self zachyceno jako slabá reference, aby se zabránilo cyklu udržování mezi časovačem a ovladačem.