Sobes.tech
Junior — Middle

V ktorých situáciách je vhodnejšie použiť slabé odkazovanie (weak var) v Swift?

sobes.tech AI

Odpoveď od AI

Slabé odkazy (weak var) v Swift sa používajú na prevenciu cyklov silných odkazov (retain cycles), ktoré vedú k únikom pamäti. Odporúča sa používať slabé odkazy v nasledujúcich situáciách:

  • Keď objekt A odkazuje na objekt B a objekt B odkazuje späť na objekt A, a jeden z týchto odkazov by mal byť slabý, aby sa predišlo cyklu.
  • Pri delegátoch (delegates), kde je delegát zvyčajne deklarovaný ako weak, aby neudržiaval objekt delegáta v pamäti.

Príklad:

class ViewController: UIViewController {
    var timer: Timer?

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

    func updateUI() {
        // aktualizácia rozhrania
    }
}

Tu je self zachytené ako slabá referencia, aby sa predišlo cyklu udržiavania medzi časovačom a kontrolérom.