加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

为什么实现接口的Delphi对象需要引用计数?

发布时间:2020-12-15 04:30:44 所属栏目:大数据 来源:网络整理
导读:换句话说,为什么它们不能像常规对象那样手动管理?或者Delphi设计师是否刚刚决定使用引用计数,因为COM需要它? 解决方法 首先要建立的是将接口添加到Delphi以支持COM.因此,很多设计决策都是为了让COM编程变得更容易. 接口引用完全可以手动管理.事实上,C和C中
换句话说,为什么它们不能像常规对象那样手动管理?或者Delphi设计师是否刚刚决定使用引用计数,因为COM需要它?

解决方法

首先要建立的是将接口添加到Delphi以支持COM.因此,很多设计决策都是为了让COM编程变得更容易.

接口引用完全可以手动管理.事实上,C和C中的原始COM最初涉及手动引用计数管理,并显式调用AddRef和Release.从C中使用COM对象时,仍需要执行手动引用计数管理.对于C,这些天您通常使用类似CComPtr的类来启用自动引用计数管理.

当COM支持被添加到Delphi时,Delphi的主要竞争对手是VB.在VB中,您从未必须进行手动引用计数管理.如果Delphi设计人员没有实现自动引用计数管理,那么让VB程序员离开VB并开始使用Delphi会更加困难.因此,我推测这是德尔福设计师做出的决定的驱动因素.即使不是这种情况,对自动引用计数进行编码比手动编程要容易得多.所以,即使我的推测是错误的,德尔福设计师的决定也让生活变得更加简单.

那么来谈谈你的具体问题:

Why can’t they be manually managed like a regular object?

他们可以.您可以实现_AddRef和_Release,以便它们不控制对象的生命周期.具体来说,这些方法不是必须计算引用,也不是_Release称为Free.

Did the Delphi designers just decide to use reference counting since it was needed for COM?

嗯,COM不需要它.如上所述,您可以使用C或C(或其他语言)对COM进行编码,而无需自动引用计数.

您可能会问的另一个问题是,为什么Delphi接口必须从IInterface派生.这源于它们最初的目的,即实现COM接口.在许多方面,如果我们可以拥有不是从IInterface派生的接口,那将是很好的.但是它就是这样啊.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读