processus de destructor Swift
Avant une instance d'une classe est relâchée, le destructeur est appelé immédiatement. Utilisez des mots - clés deinit
pour marquer le destructor, utilisez la fonction d'initialisation similaire init
pour marquer. Destructeurs applique uniquement aux types de classe.
principe du processus de Destructor
Swift va libérer automatiquement l'instance ne sont plus nécessaires pour libérer des ressources.
Swift par Automatic Reference Counting (ARC) gère les instances de gestion de la mémoire.
Habituellement, lorsque vous ne devez pas manuellement instance est libéré à nettoyer. Cependant, en utilisant leurs propres ressources, vous devrez peut-être faire un peu de nettoyage supplémentaire.
Par exemple, si vous créez une classe personnalisée pour ouvrir un fichier et d'écrire des données, vous devrez peut-être libérée avant l'instance de classe pour fermer le fichier.
grammaire
Dans la définition de la classe, chaque classe peut avoir au plus une destructor. Destructeur sans aucun paramètre, sans parenthèses dans le texte:
deinit { // 执行析构过程 }
Exemples
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) show = nil print(counter)
La sortie de l'exécution du programme ci-dessus est la suivante:
1 0
Quand le spectacle = instruction nulle est exécutée, la calculatrice moins 1, affichez la mémoire sera libérée.
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) print(counter)
La sortie de l'exécution du programme ci-dessus est la suivante:
1 1