Swift - Désinitialisation

Avant qu'une instance de classe ne doive être désallouée, «deinitializer» doit être appelé pour désallouer l'espace mémoire. Le mot-clé 'deinit' permet de désallouer les espaces mémoire occupés par les ressources système. La déinitialisation n'est disponible que sur les types de classe.

Désinitialisation pour désallouer de l'espace mémoire

Swift 4 désalloue automatiquement vos instances lorsqu'elles ne sont plus nécessaires, pour libérer des ressources. Swift 4 gère la gestion de la mémoire des instances via le comptage automatique de références (ARC), comme décrit dans Comptage automatique des références. En règle générale, vous n'avez pas besoin d'effectuer un nettoyage manuel lorsque vos instances sont désallouées. Cependant, lorsque vous travaillez avec vos propres ressources, vous devrez peut-être effectuer vous-même un nettoyage supplémentaire. Par exemple, si vous créez une classe personnalisée pour ouvrir un fichier et y écrire des données, vous devrez peut-être fermer le fichier avant que l'instance de classe ne soit libérée.

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

print(counter)
print = nil
print(counter)

Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -

1
0

Lorsque l'instruction print = nil est omise, les valeurs du compteur conservent les mêmes car il n'est pas désinitialisé.

var counter = 0; // for reference counting

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

Lorsque nous exécutons le programme ci-dessus en utilisant aire de jeux, nous obtenons le résultat suivant -

1
1