Sobes.tech
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.