学习目标
1.只学习在ARC机制下指示符的作用,非ARC机制下的指示符作用就不学习了,没有意义。
2.初学都重点因该掌握getter,setter,readonly,readwrite,copy
<a href="http://blog.csdn.net/wangguangrong/article/details/50597434">原文</a>
学习过程:
1.指示符有getter,setter,readonly,readwrite,atomic,nonatomic,strong,weak,unsafe_unretained, assign,retain,copy;
2.在ARC机制中可使用以下指示符
1) getter, setter用于修改改getter与setter的方法名,修改后依然可以使用”.”访问属性。
2) readonly只合成getter方法
3) readwrite合成getter与setter方法,默认就是这个指示符
4) atomic同步getter/setter方法,线程安全。
5) nonatomic不同步getter/setter方法,线程不安全。默认就是这个指示符
6) strong强引用,该属性没有被销毁,并且引用着被赋值的对象,那么这个对象就永远不会被销毁
7) weak弱引用,被赋值的对象在内存紧时会被销毁,哪怕该属性还引用起被赋值的对象。当被赋值对象被销毁后,该属性会被赋值为nil
8)unsafe_unretained与weak的作用差不多,只有一个区别。当被引用的对象被销毁后。weak的属性会被赋值nil,而unsafe_unretained的值不变,成为野指针。所以使用unsafe_unretained还不如使用weak。
9) assign 作用与unsafe_unretained相同
10)retain 作用与strong相同
11) copy 只能用于NSString* 属性中,作用是克隆一个字符串来为属性赋值。
3.使用指示符的语法格式@property (指示符1,......) 类型 属性名;示例:@property (copy,setter=xx:,getter=yy,atomic) NSString* name;
4.使用指示符的原则
1)属性可以使用0到多个指示符
2)使用多个指示符时相互之间使用”,”隔开
3)使用多个指示符的意义不可有冲突,比如atomic与nonatomic同时使用或readonly与setter同时使用。