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