属性的作用
通过声明属性(@property)来摆脱繁琐的setter方法与getter方法的创建.
如果需要同时重写getter/ setter方法,需要声明成员变量
//属性的参数
@property(参数,多个参数用 , 隔开) 变量类型 变量名;
retain(非ARC,需要setter方法管理内存,强引用) -- assgin(直接赋值,缺省值,弱引用)
strong(ARC,需要setter方法管理内存,强引用) -- weak(直接赋值,使用weak修饰,释放时,会将对象 = nil,弱引用)
nonatomic(线程不安全,访问效率较高) -- actomic(线程安全,访问效率较低,缺省值)
readonly(只读,只有getter方法) -- readwrite(读写,getter / setter都有,缺省值)
copy//对象要遵守copy协议
对于不可变对象
copy 浅复制(浅拷贝,指针拷贝) 返回值不可变,和retain类似
mutableCopy 深复制(深拷贝,内存拷贝) 返回值可变
对于可变对象:
copy 深拷贝,返回值不可变
mutableCopy 深拷贝,返回值可变