【发布时间】:2014-04-07 09:57:46
【问题描述】:
换句话说,为什么不能像普通对象一样手动管理它们?还是 Delphi 设计者只是决定使用引用计数,因为 COM 无论如何都需要它?
【问题讨论】:
-
接口什么都不做。如何管理引用计数取决于实现接口的类。无论如何,较新的基于 LLVM 的 Delphi 编译器也引入了对象引用的引用计数。
-
@GünthertheBeautiful 这是真的。但是所有 Delphi 接口都派生自
IInterface,因此分配引用会导致编译器生成对_AddRef和_Release的调用。实现对象可能什么都不做,但调用仍然存在。这是不需要做的事情,也没有融入到 C 和 C++ 等语言中。 -
事实上,不是对象被引用计数,而是接口被计数。当然,对象也必须实现那部分,但是对 AddRef 和 Release 的调用通常在接口上,而不是在对象上。