Si vous avez des problèmes pour déterminer la manière correcte (placer, ordonner et ainsi de suite) de détruire des objets standard dans un programme Delphi, utiliser des objets ou des interfaces comptés ne vous aidera pas du tout. Je comprends que vous voulez que les nœuds d'un graphique conservent des références les uns aux autres, et lorsqu'il n'y a plus de références à un objet, il doit être détruit automatiquement. Mais considérons le fait que deux nœuds peuvent chacun avoir une référence à l'autre nœud, et le nombre de ref n'atteindra jamais 0, de sorte que ces objets ne seront jamais libérés. Vous aurez besoin de casser au moins une des références/dépendances manuellement. Et si vous devez le faire de toute façon, vous pouvez tout aussi bien ignorer le décompte des références. Pour plus d'informations, voir l'article Wikipedia sur weak references. Les interfaces peuvent être utilisées dans Delphi pour le comptage des références, mais les références faibles ne peuvent être maintenues qu'avec un typecasting intelligent. Pour un exemple, voir this source code and its comments. Une idée que vous pourriez vouloir explorer est de conserver la gestion standard de la durée de vie de vos objets et de laisser les objets graphiques suivre les dépendances à la place.
Laissez chaque objet graphique avoir une liste d'autres objets avec lesquels il a des connexions. Maintenant vous pouvez simplement libérer n'importe lequel des objets, et le code d'entretien de la liste supprimera toutes les références à l'objet détruit de tous les autres objets. Si vous voulez modifier le graphique, il vous suffit de libérer les nœuds que vous voulez supprimer, et les dépendances seront mises à jour. Si vous voulez détruire tout le graphique, détruisez tous les nœuds. Fondamentalement, vous avez une liste de nœuds (propriété, gestion de la durée de vie) et une autre structure de données pour décrire le graphique.
+1 La réponse la plus complète à propos de ce problème. Voir aussi http://stackoverflow.com/questions/171730/interface-recursion-and-reference-counting pour une solution plus simple si tous les enfants appartiennent tous à leurs parents. –