Delphi   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 如果一切都实现了接口,这会是垃圾收集吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我还是一个新手,我知道我的想法不正确;我只是不知道在哪里……

几乎所有Delphi中的东西都来自TObject.如果所有内容都来自实现某些简单接口的TinterfaceObject(例如,“INamable”,使用返回类名称字符串的单个方法),该怎么办?由于TObject已经有一个返回名称字符串的属性,因此您不需要向其他类添加任何内容.

换句话说,TinterfacedObject将从TObject(或层次结构中的高处)继承,并且当前从TObject继承的所有内容现在将从此新类继承.这是不是意味着现在一切都被引用了?

如果你能发现我缺乏知识的地方,我很乐意学习.谢谢,一如既往 – Al C.

解决方法

目前尚不清楚你是否在问:

>为什么Borland最初开发Delphi时没有这样做?
>为什么Embarcadero不会在未来的Delphi版本中这样做?
>为什么我不使用自己的用户数据类型?

是的,它会.

但是,您不一定要重新计算所有内容:每个小整数,每个字符串,每个布尔值,数组中的每个元素……如果没有其他原因,引用计数的实现会增加一些开销,例如:每个对象有一点额外的内存,对于大型对象来说可能是微不足道的,但如果应用于每个微小的对象,则会更加重要.

另外,另见Garbage Collector For Delphi Objects and Components(引用),

Delphi提供三种对象管理方式:

不完全的;仅仅引用计数不像垃圾收集那样健壮:

>使用引用计数,如果您有两个引用计数实例,每个实例持有对另一个的引用,则它们不会自动释放.要释放它们,你需要打破这个“循环引用”(即明确告诉其中一个释放它对另一个的引用).
>通过真正的垃圾收集,垃圾收集器会注意到这两个因素并未从其他任何地方引用,并将它们两者都释放.

更新如果您将潜在的循环引用注释为[弱]引用,那么它们将被销毁.但在Delphi 10.1 Berlin之前,这只适用于NexGen编译器(即那些使用LLVM的编译器).从柏林10.1开始,这些[弱]参文献随处可见.

大佬总结

以上是大佬教程为你收集整理的delphi – 如果一切都实现了接口,这会是垃圾收集吗?全部内容,希望文章能够帮你解决delphi – 如果一切都实现了接口,这会是垃圾收集吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。