换句话说,为什么它们不能像普通对象一样手动管理?或者Delphi设计师只是决定使用引用计数,因为它在COM中已经需要了吗?
你可能会有另一个问题,为什么Delphi接口必须派生自IInterface
。这源于它们最初的目的,即实现COM接口。在许多方面,如果我们可以拥有不从IInterface
派生的接口会更好。但事实就是这样。
TComponent
派生的Delphi对象虽然可能实现任何接口,但其引用计数已被禁用。许多人之前已经要求编译器引入一个新的非引用计数接口类型,Embarcadero也意识到了这个问题。然而,它是否会被实现仍是未知数。 - Remy Lebeau
IInterface
,因此分配引用会导致编译器生成对_AddRef
和_Release
的调用。实现对象可能什么也不做,但这些调用仍然存在。这是不必要的事情,而且在 C 和 C++ 等语言中也没有这样的设计。 - David Heffernan