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.