ARC
关键字
copy
复制内容(深复制),如果调用copy的是数组,则为指针复制(浅复制),仅仅复制子元素的指针。
assign
对基础数据类型(NSInteger,CGFloat)和C数据类型(int, float, double, char等)
strong
相当于retain。strong在ARC环境为默认属性类型。
** retain**
NSObject及其子类。
Release旧值,retain新值。
Retain是指针复制(浅复制),引用计数加1,而不会导致内容被复制。
** weak**
取代之前的assign,对象销毁之后会自动置为nil,防止野指针。
Assign不能自动置为nil,需要手动置为nil。
Delegate基本总是使用weak,以防止循环引用。特殊情况是,希望在dealloc中调用delegate的某些方法进行释放,此时如果使用weak将引起异常,因为此时已经是nil了,那么采用assign更为合适。
** readonly**
此标记说明属性是只读的,默认的标记是读写,如果你指定了只读,在@implementation中只需要一个读取器。或者如果你使用@synthesize关键字,也是有读取器方法被解析。而且如果你试图使用点操作符为属性赋值,你将得到一个编译错误。
readwrite
此标记说明属性会被当成读写的,这也是默认属性。设置器和读取器都需要在@implementation中实现。如果使用@synthesize关键字,读取器和设置器都会被解析。
unsafe_unretained
unretained且unsafe,由于是unretained所以与weak有点类似,但是它是unsafe的.