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.