2017-10-15 6 views
1

Y at-il une méthode de classe qui est appelée quand elle est détruite?Crystal - méthode sur la destruction de la classe

Lorsque vous utilisez new sur une classe, la méthode initialize est appelée, existe-t-il un équivalent destroy?
J'ai besoin pour assurer une base de données est fermée correctement entre autres lorsque la classe n'est plus utilisé (le programm continue à fonctionner après la base de données est fermée).

Répondre

5

Il y a Object#finalize, mais un tel destructor devrait généralement être nécessaire pour des abstractions de bas niveau comme en libérant des ressources d'une bibliothèque C. Pour l'application normale ou le code de la bibliothèque que je considère cette une odeur de code et il y a souvent de meilleures solutions.

Si la connexion à la base de données est utilisée uniquement pour une interaction spécifique, il est probablement préférable d'ouvrir manuellement et de fermer (éventuellement encapsulé dans un bloc) la connexion au lieu de s'appuyer sur un hook destructeur GC.