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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© runsunlife 中级黑马   /  2015-8-27 06:32  /  416 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ARC
1、ARC:在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写retain,release和 autorelease三个关键字就好~这是ARC的基本原则。  

2、ARC的判断原则:
只要还有一个强指针变量指向对象,对象就会保持在内存中。
只要没有强指针指向对象,对象就会被释放。  
注意:当使用ARC的时候,暂时忘记“引用计数器”,因为判断标准变了

3、循环strong问题 :循环引入的对象都为strong;
解决方案:
循环引入的对象中其中一个对象设置为strong 另一个设置为weak

4、ARC特点总结  
(1)不允许调用release,retain,retainCount  

(2)允许重写dealloc,但是不允许调用[super dealloc]  

(3)@property的参数:  
strong:相当于原来的retain(适用于OC对象类型),成员变量是强指针  
weak:相当于原来的assign,(适用于oc对象类型),成员变量是弱指针  
assign:适用于非OC对象类型(基础类型)  
在ARC下 @property set方法参数
原子性\读写和MRC下是一样的
MRC
ARC
assign
assign
retain
strong(强指针)OC其他的对象    weak(弱指针) UI控件
copy
copy

5、ARC使用注意事项  
1)ARC中,只要弱指针指向的对象不在了,就直接把弱指针做清空(赋值为nil)操作。  

2)__weakPerson *p=[[Person alloc] init];//不合理,对象一创建出来就被释放掉,对象释放掉后,ARC把指针设置为nil。
__weak Student *stu = [Student new];
//1  Student new
       //   产生空间
//2  弱指针 stu 指向
//弱指针指向对象销毁的过程
        //1) 释放对象空间
        //2)stu = nil

3)ARC中在property处不再使用retain,而是使用strong,在dealloc中不需要再
[super dealloc]。
@property(nonatomic,strong)Dog *dog;
// 意味着生成的成员变量_dog是一个强指针,相当于以前的retain。  

4)如果换成是弱指针,则换成weak,不需要加_ _。  

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马