Junior — Middle
In quali situazioni è preferibile usare un riferimento debole (weak var) in Swift?
sobes.tech AI
Risposta dell'AI
I riferimenti deboli (weak var) in Swift vengono utilizzati per prevenire cicli di riferimenti forti (retain cycles), che portano a perdite di memoria. È consigliabile usare riferimenti deboli nelle seguenti situazioni:
- Quando l'oggetto A fa riferimento all'oggetto B, e l'oggetto B fa riferimento a sua volta all'oggetto A, e uno di questi riferimenti deve essere debole per evitare un ciclo.
- Nei delegati (delegates), dove il delegato viene generalmente dichiarato come weak per non mantenere l'oggetto delegato in memoria.
Esempio:
class ViewController: UIViewController {
var timer: Timer?
func startTimer() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in
self?.updateUI()
}
}
func updateUI() {
// aggiornamento dell'interfaccia
}
}
Qui, self viene catturato come riferimento debole per evitare un ciclo di ritenzione tra il timer e il controller.