在手动内存分配和指针仍然占主导地位的世界中(Borland Delphi),我需要一个通用的解决方案来解决我认为的普遍问题:
在给定时刻,可以从多个位置(列表、其他对象……)引用一个对象。有没有一种好方法来跟踪所有这些引用,以便我可以在对象被销毁时更新它们?
如果您想通知其他人更改,您应该实施“观察者模式” http://en.wikipedia.org/wiki/Observer_pattern。 Delphi 已经为 TComponent 后代完成了这项工作。您可以调用 TComponent.FreeNotification 方法,并在其他组件被销毁时通知您的对象。它通过调用Notification 方法来实现这一点。您可以通过调用 TComponent.RemoveFreeNotification 将自己从通知列表中删除。另请参阅这一页 http://delphi.about.com/library/bluc/text/uc083101a.htm.
大多数垃圾收集器不允许您获取引用列表,因此在这种情况下它们无济于事。如果您使用接口,Delphi 可以进行引用计数,但是您需要自己跟踪引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)