Sobes.tech
Junior — Middle

Un oggetto verrà automaticamente rimosso dalla memoria se viene puntato da tre riferimenti deboli (weak) e uno non obbligatorio (unowned)?

sobes.tech AI

Risposta dell'AI

L'oggetto verrà automaticamente rimosso dalla memoria se non ci sono più riferimenti forti (strong) ad esso. I riferimenti deboli (weak) e non obbligatori (unowned) non aumentano il conteggio dei riferimenti dell'oggetto. Nel vostro caso, se ci sono solo tre riferimenti weak e uno unowned, ma nessun riferimento strong, l'oggetto viene considerato inutilizzato e verrà deallocato.

Esempio:

class MyClass {}

var strongRef: MyClass? = MyClass() // riferimento forte
weak var weakRef1 = strongRef
weak var weakRef2 = strongRef
weak var weakRef3 = strongRef
unowned var unownedRef = strongRef!

strongRef = nil // ora non ci sono riferimenti forti, l'oggetto verrà eliminato