属性简单来讲,应该是成员变量和setter getter方法的集合。
1.在类接口部分使用@property指令定义属性。
@property (nonatomic,retain)NSString * name;
2.在类实现部分使用@synthesize指令声明该属性即可。(最新的x-code可以省略)
还可以在@property和类型之间用括号而外添加一些指示符。
assign:简单赋值。
atomic(nonaatomic):原子操作,主要是指线程是否安全。如果使用atomic,当一个线程进入存取方法体之后,其他方法无法进入该存取方法。atomic时默认值。
copy:当调用setter方法时候,会将被赋值的对象复制一个副本,再将该副本赋给成员变量,指向不同的地址。确保修改对象不会对成员变量造成这种影响可以使用copy。
readonly,readwrite:readonly系统只合成getter方法,readwrite时间哦默认值,指示系统需要喝成setter和getter方法。
retain:该属性原来所引用的对象引用计数减1,被赋值的对象引用计数加1。在未启用ARC下,retain是一个不错的指示符。
strong,weak:强引用strong,只要改强引用指向被赋值的对象,那么该对象就不会自动回收。弱引用weak,即使弱引用指向被赋值的对象,那么该对象也可能被回收。weak可以有效的防止悬空指针。