Swift - Deinizializzazione

Prima che un'istanza di classe debba essere deallocata, è necessario chiamare "deinitializer" per deallocare lo spazio di memoria. La parola chiave "deinit" viene utilizzata per deallocare gli spazi di memoria occupati dalle risorse di sistema. La deinizializzazione è disponibile solo sui tipi di classe.

Deinizializzazione per deallocare lo spazio di memoria

Swift 4 dealloca automaticamente le tue istanze quando non sono più necessarie, per liberare risorse. Swift 4 gestisce la gestione della memoria delle istanze tramite il conteggio automatico dei riferimenti (ARC), come descritto in Conteggio automatico dei riferimenti. In genere non è necessario eseguire la pulizia manuale quando le istanze vengono deallocate. Tuttavia, quando si lavora con le proprie risorse, potrebbe essere necessario eseguire da soli alcune pulizie aggiuntive. Ad esempio, se crei una classe personalizzata per aprire un file e scrivere alcuni dati su di esso, potresti dover chiudere il file prima che l'istanza della classe venga deallocata.

var counter = 0; // for reference counting
class baseclass {
   init() {
      counter++;
   }
   deinit {
      counter--;
   }
}
var print: baseclass? = baseclass()

print(counter)
print = nil
print(counter)

Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:

1
0

Quando l'istruzione print = nil viene omessa, i valori del contatore rimangono gli stessi poiché non è deinizializzato.

var counter = 0; // for reference counting

class baseclass {
   init() {
      counter++;
   }
   deinit {
      counter--;
   }
}
var print: baseclass? = baseclass()
print(counter)
print(counter)

Quando eseguiamo il programma precedente usando playground, otteniamo il seguente risultato:

1
1