Latest web development tutorials

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