iOS面试题:什么是arc?(arc是为了解决什么问题诞生的?)

 我来答
户如乐9318
2022-07-13 · TA获得超过6649个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:138万
展开全部

先解释ARC: automatic reference counting自动引用计数。

ARC几个要点:

在对象被创建时 retain count +1 ,在对象被 release 时 retain count -1 .当 retain count 为0 时,销毁对象。
程序中加入 autoreleasepool 的对象会由系统自动加上 autorelease 方法,如果该对象引用计数为0,则销毁。
那么ARC是为了解决什么问题诞生的呢?这个得追溯到MRC手动内存管理时代说起。

MRC下内存管理的缺点:

1.当我们要释放一个堆内存时,首先要确定指向这个堆空间的指针都被 release 了。(避免提前释放)

2.多线程操作时,不确定哪个线程最后使用完毕

3.释放指针指向的堆空间,首先要确定哪些指针指向同一个堆,这些指针只能释放一次。(MRC下即谁创建,谁释放,避免重复释放)

4.模块化操作时,对象可能被多个模块创建和使用,不能确定最后由谁去释放。

在Objective C中,有三种类型是ARC适用的:

像 double * , CFStringRef 等不是ARC适用的,仍然需要手动管理内存。

本文参考文章: starfox寒流

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式