A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程序猿-2014 中级黑马   /  2014-4-22 00:52  /  1088 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OC中arc的作用是什么?   仅仅是取代了  release和retain么?个人感觉好像没那么简单,ARC和手动管理内存有什么本质的区别么?求大神解惑!

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
ARC是一个编译器特征,它提供了对OC对象自动管理内存。ARC让开发者专注于感兴趣的代码和对象的关系,而不用考虑对象的retain和release。

ARC在编译时期添加代码,保证对象可用。概念上说,ARC遵循手动引用计数的规则,替开发者,在编译时期添加合适的代码。

Xcode4.2(Mac OS 10.6、10.7和iOS4和iOS5)支持ARC,弱引用在10.6和iOS4上不支持。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
1.ARC是编译器特性【在编译代码的时候,编译器会自动检测】

2.ARC的判断准则:只要没有强指针指向对象,就会释放对象

3.ARC特点总结:
    1》不允许调用release,retain,retainCount
    2》允许重写dealloc,但是不允许调用[super dealloc]
    3》@property的参数
        *strong : 成员变量是强指针(适用于OC对象类型)
        *weak : 成员变量是弱指针 (适用于OC对象类型)
        *assign : 适用于非OC对象类型
    4> 以前的retain改成strong,其它一切不变

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
ARC和MRC区别就是一个是自动加release,retain的一个是手动的加release,retain
在内存管理上没有本质区别 ARC就是编译器帮你加了release,retain而MRC是自己手动加的
回复 使用道具 举报
ARC就是自动管理内存。把release和retain操作封装起来。方便开发。本质上应该没有什么区别。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马