再谈ARC(Automatic Reference Counting)自动引用计数器
一、ARC与操作系统及其中将要执行的线程的自旋计数有关
1.1、《浅析ARC》https://blog.csdn.net/feng2qing/article/details/51199342
二、ARC是编译器对内存指针(指针可以指向任何对象)回收释放的自动处理方式,以期取代手工代码的执行效率
2.1、《ARC使用和注意点》https://blog.csdn.net/cooljune/article/details/18888863
三、ARC与方法的对象传参与释放息息相关
3.1、官方:《Automatic Reference Counting in Delphi Mobile Compilers》
http://docwiki.embarcadero.com/RADStudio/Rio/en/Automatic_Reference_Counting_in_Delphi_Mobile_Compilers
四、ARC与操作系统的SDK有关,因为编译器需要对其system.pas初始化引用的SDK中的类型进行内存指针的自动处理
五、操作系统及其SDK的更新速度和性能直接影响到delphi编译器的升级
10.4在发布研讨会时,是这样说的:
统一内存管理
现在,使用对象内存管理的经典实现,Delphi内存管理已在所有受支持的平台(移动,桌面和服务器)之间进行了统一。与自动引用计数(ARC)相比,它与现有代码更好地兼容,并且为组件,库和最终用户应用程序提供了更简单的编码。ARC模型保留用于所有平台的字符串管理和接口类型引用。对于C ++,此更改意味着在C ++中创建和删除Delphi样式的类与所有分配堆的C ++类一样,遵循常规的内存管理,从而大大降低了复杂性。
但是,对于过去的你写的老的代码,需要注意和处理:
Delphi XE 10.4官方声明是取消了ARC,意味着:1、所有内存指针的回收释放,均要你自己写手工代码。特别是方法的末尾,需要对栈内变量的指针及其传入参数的指针,进行管理和释放。2、传参,参数的型别标识符(const、out、var、隐式参数 )要传正确,因为取消了ARC,不再自动帮你考虑参数的回调、释放等问题。参考:本文最后,浅析《ARC自动引用计数与方法function过程procedure的传参的对象类型及其回调值》。
因此,极有可能出现Delphi的IDE的编译器与操作系统SDK不同步的局面,因而对于软件开发而言,并非SDK的版本越高越好!同时,也并非操作系统的版本的越新越好!
故而,这是我想,Delphi XE 10.4开始,官方声明取消ARC的真正缘由。
六、我在开发Android移动平台UI界面事件调用多级嵌套的线程的故事
......慢慢修改本文写给大家,分享一下......
本博客关联:
1、浅析《ARC自动引用计数与方法function过程procedure的传参的对象类型及其回调值》
https://blog.csdn.net/pulledup/article/details/102646822
2、《RAD Studio 10.4 for delphi XE Assigned和Nil的联系与区别》
https://blog.csdn.net/pulledup/article/details/107112785
喜欢的话,就在下面点个赞、收藏就好了,方便看下次的分享: