Sobes.tech
Junior — Middle

In quali situazioni si utilizza un riferimento debole a un oggetto?

sobes.tech AI

Risposta dell'AI

Un riferimento debole (weak reference) in iOS viene utilizzato per evitare cicli di riferimenti forti (retain cycles), che possono portare a perdite di memoria. Non aumenta il contatore di riferimenti dell'oggetto, quindi l'oggetto può essere liberato anche se ci sono riferimenti deboli ad esso.

Situazioni tipiche di utilizzo dei riferimenti deboli:

  • Delegati: spesso dichiarati come weak per evitare un ciclo tra l'oggetto e il suo delegato.
  • Closure: se una closure cattura self, per evitare un ciclo, self viene catturato con [weak self].
  • Connessioni tra oggetti, dove un oggetto possiede un altro, e l'altro deve avere un riferimento senza possederlo.

Esempio con delegato:

protocol SomeDelegate: AnyObject {
    func didUpdate()
}

class SomeClass {
    weak var delegate: SomeDelegate?
}

In questo modo, il riferimento debole aiuta a gestire la memoria e prevenire perdite.