Processus de destruction rapide
Le destructeur est appelé immédiatement avant la publication d'une instance d'une classe. Utilisez le mot-clé deinit
pour marquer le destructeur, de la même manière que la fonction d'initialisation est marquée avec init
. Les destructeurs ne fonctionnent que sur les types de classe.
Principe du processus de destruction
Swift libérera automatiquement les instances qui ne sont plus nécessaires pour libérer les ressources.
Swift gère la gestion de la mémoire des instances via le comptage automatique de références (ARC).
Habituellement, il n'est pas nécessaire de nettoyer manuellement lorsque votre instance est désallouée. Cependant, lorsque vous utilisez vos propres ressources, vous devrez peut-être effectuer un nettoyage supplémentaire.
Par exemple, si vous créez une classe personnalisée pour ouvrir un fichier et écrire des données, vous devrez peut-être fermer le fichier avant que l'instance de classe ne soit publiée.
Syntaxe
Dans la définition d'une classe, chaque classe peut avoir au plus un destructeur. Le destructeur ne prend aucun paramètre et est écrit sans parenthèses :
deinit { // 执行析构过程 }
Exemple
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) show = nil print(counter)
Le résultat de sortie de l'exécution du programme ci-dessus est :
1 0
Lorsque show = nil L'instruction est exécutée Ensuite, la calculatrice soustrait 1 et la mémoire occupée par show sera libérée.
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) print(counter)
Le résultat de sortie de l'exécution du programme ci-dessus est :
1 1