Delphi内存管理设计策略:对象还是接口?

时间:2010-03-31 07:28:52

标签: delphi memory-management interface

关于Delphi内存管理,您的设计策略是什么?

  • 您希望手动创建和发布对象的用例是什么?
  • 首选Interfaces,InterfacedObjects及其引用计数机制的用例是什么?

您是否已经确定了参考计数对象的一些陷阱或困难?

感谢您在此分享您的经验。

2 个答案:

答案 0 :(得分:7)

每当您在线程之间共享对象时,最好使用接口。共享对象不一定具有一个可识别的所有者,因此让放弃对接口的最后引用的线程释放实现对象是自然的。有关如何在设计和克服多线程代码中的一些复杂所有权问题时使用接口的一个很好的示例,请参阅OmniThreadLibrary

答案 1 :(得分:1)

除非由于VCL限制,否则您应该始终更喜欢接口。我怀疑,如果Delphi 1.0中提供了接口,那么VCL的结果将大不相同。

一个小的考虑因素是注意参考周期。如果A拥有B的接口而B拥有A的接口,那么它们将永远存在。