码迷,mamicode.com
首页 > 其他好文 > 详细

ARC\MRC下property关键字的用法

时间:2015-12-09 19:18:28      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

        使用属性关键字前,需要先理解属性关键字的作用。其实《简单来说...》就是指导底层如何生成set、get方法的,如果不自己定义set、get方法,系统将会自动为你生成,但如何生成依据的就是这些属性关键字,不同的属性关键字的组合将决定set、get方法的具体实现,实现不同,功能自然也就不同了...

 ----------------------------------------------------------------------------------------------------------------------------------------

ARC:

1、assign:基本数据类型、枚举、结构体等非OC对象类型。

2、strong/retain:使用必须满足两个条件,一是必须是OC对象类型,二是需要被强引用不能‘随便‘释放。

3、weak:

              1)别人创建别人拥有,你只是借用一下而已,随时可能会不见,但不见的时候你可以发现。

              2)使用时必须满足两个条件,一是必须是OC对象类型,二是自己不直接拥有的对象。比如delegate,parentviewcontroller等,以防止循环引用。

              3)weak有一个大招,就是当所指对象被释放的时候会自动置为nil。实现的原理《简单来说...》就是每一个strong维护一个weaktable,当把一个strong对象赋值给weak对象时,weaktable中就记录该weak对象,当strong释放时就把weaktable中所有的对象取出来挨个置为nil。

4、copy:用于block。用于NSString、NSDictionary、NSArray等有Mutable类型的类,此处可以理解为(copy=不可变)。经过测试后发现当把NSString对象赋给copy类型的NSString时,地址未发生改变相当于浅拷贝和strong效果一样,但把NSMutableString赋给copy类型的NSString时地址发生改变,此处相当于深拷贝。

5、readonly/readwrite:只读/可读写.

6、atomic/nonatomic:原子操作/非原子,《简单来说...》就是是否线程安全,但通过此方法来保证线程安全开销是很大滴,如果条件允许还是在适合的地方加锁靠谱。

7、getter/setter:以上都无所谓了,自己写set、get方法。

 ----------------------------------------------------------------------------------------------------------------------------------------

MRC:

1、assign:基本数据类型、枚举、结构体等非OC对象类型。也可用于delegate\parentviewcontroller等不直接拥有的对象,作为MRC下weak的替代品。

2、retain:使用必须满足两个条件,一是必须是OC对象类型,二是需要被强引用不能‘随便‘释放。

3、unsafe_unretained:

                                1)别人创建别人拥有,你只是借用一下而已,随时可能会不见,并且不见的时候连个招呼都不打。与ARC中weak的区别就是不会自动置为nil。

                                2)使用时必须满足两个条件,一是必须是OC对象类型,二是自己不直接拥有的对象。

                                3)与assign的唯一区别就是不能用于基本数据类型。

4、copy:用于block。用于NSString、NSDictionary、NSArray等有Mutable类型的类,此处可以理解为(copy=不可变)。经过测试后发现当把NSString对象赋给copy类型的NSString时,地址未发生改变相当于浅拷贝和strong效果一样,但把NSMutableString赋给copy类型的NSString时地址发生改变,此处便想当于深拷贝了。

5、readonly/readwrite:只读/可读写.

6、atomic/nonatomic:原子操作/非原子,《简单来说...》就是是否多线程安全,但通过此方法来保证多线程安全开销是很大滴,如果条件允许还是在适合的地方加锁靠谱。

7、getter/setter:以上都无所谓了,自己写set、get方法。

ARC\MRC下property关键字的用法

标签:

原文地址:http://www.cnblogs.com/ThreeLittlePigs/p/5033683.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!