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

objective-c – 旧版iOS和OS X上的ARC

发布时间:2020-12-16 09:41:35 所属栏目:百科 来源:网络整理
导读:这是为了澄清我对ARC的概念性理解中的一些疑问.如果ARC是编译时技术,为什么它不适用于所有版本的iOS和OS X? 解决方法 ARC不仅仅是一种编译时技术.它还依赖于一些运行时组件.这有两个部分: 引用计数.在编译时,ARC引入了对一堆辅助函数的调用.这些都是docume
这是为了澄清我对ARC的概念性理解中的一些疑问.如果ARC是编译时技术,为什么它不适用于所有版本的iOS和OS X?

解决方法

ARC不仅仅是一种编译时技术.它还依赖于一些运行时组件.这有两个部分:

>引用计数.在编译时,ARC引入了对一堆辅助函数的调用.这些都是documented online,但重要的是objc_retain(),objc_release()和objc_autorelease().这些操作与在对象上调用-retain,-release或-autorelease相同,但是在ARC下可以使用运行时函数进行一些额外的优化(特别是当方法返回自动释放的对象并且调用者存储将值转换为强变量,可以完全跳过自动释放保留).这些运行时功能是添加操作系统要求的功能.幸运的是,如果您定位较旧的操作系统,Xcode可以链接到名为libarclite的静态库中,该库提供这些功能的实现,从而允许您在定位较旧的操作系统(例如iOS 4.3)时使用ARC.缺点是这些功能没有“真正的”ARC所做的优化,因此性能可能会受到轻微影响.>归零弱参考支持.这还需要一组运行时函数,以及对内存管理在运行时中如何工作的内部的一些更改,以及框架中的一些更改以更好地支持清零弱引用.特别是内存管理的变化是为什么无法像使用ARC的其余部分那样使用libarclite来向后移植弱引用支持.

(编辑:李大同)

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

    推荐文章
      热点阅读