@property 定义一个属性
@synthesize 告诉编译器自动为属性自动生成 getter 和setter方法
在定义属性的时候会用到如下@attributes
nonatomic,告诉编译器不要为该属性进行多线程并发访问控制。这样可以提高性能。
readonly,告诉编译器该属性为只读属性
readwrite,告诉编译器该属性为可读写属性
strong,给该属性赋值时,对值进行强引用,即对值进行引用计数加1.
weak,给该属性赋值时,对值进行弱引用,不对值进行引用计数加1.
assign,给该属性赋值时,只进行简单赋值,不更改引用计数
copy,给该属性赋值时,对新值进行拷贝(新对象引用计数为1)后作为自身的值,对旧值引用计数减1.
retain,给属性赋值时,对新值引用计数加1,将旧值引用计数减1