在手动内存分配和指针仍然占主导地位的世界中(Borland Delphi),我需要一个通用的解决方案来解决我认为的普遍问题:
在给定时刻,可以从多个位置(列表、其他对象……)引用一个对象。有没有一种好方法来跟踪所有这些引用,以便我可以在对象被销毁时更新它们?
最佳答案
如果您想通知其他人更改,您应该实现"Observer Pattern" 。 Delphi 已经为 TComponent 后代完成了这项工作。您可以调用 TComponent.FreeNotification 方法,并在其他组件被销毁时通知您的对象。它通过调用Notification 方法来实现这一点。您可以通过调用 TComponent.RemoveFreeNotification 将自己从通知列表中删除。另请参阅this page .
大多数垃圾收集器不允许您获取引用列表,因此在这种情况下它们没有帮助。如果您使用接口(interface),Delphi 可以进行引用计数,但是您需要自己跟踪引用。
关于oop - 如何跟踪对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18119/