finalize
Si une classe définit une méthode finalize
,
quand une instance de cette classe passe au ramasse-miette,
cette méthode est appelée:
```crystal class Foo def finalize
# Appelée lorsque Foo passe au ramasse-miette
puts "Bye bye from #{self}!"
end end
Utilisez cette méthode pour libérer des ressources allouées par des bibliothèques externes qui ne sont pas directement géré par le collecteur d'ordures Crystal.
Des exemples de ceci peuvent être trouvés dans IO::FileDescriptor#finalize
ou OpenSSL::Digest#finalize
.
Note:
La méthode
finalize
sera seulement appelée quand l'objet a été complétement initialisé via la méthodeinitialize
. Si une exception est relevée dans la méthodeinitialize
,finalize
ne sera pas appelée. Si votre classe définit une méthodefinalize
assurez-vous de récupérer toutes les exceptions qui pourraient être levées dans les méthodesinitialize
et de libérer les ressources.L'attribution de toute nouvelle instance d'objet lors de la collecte des ordures pourrait en résulter dans un comportement indéfini et très probablement bloquant votre programme.