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.