readonly
用于不想让别人修改属性
retain
用于值类型为对象的属性,编译器会持有(retain)传入的值,并在有新值传入时将原有值释放。
copy
希望保存一份传入值的拷贝而不是值自身。如,保存一个数组,将该数组设为属性值,不让别人修改其内容。这会给传入值发送一个copy消息,然后持有复制的结果。
assign
用于基本类型的属性,如int ,float 等。
nonatomic
默认,生成的访问方法都线程安全,在修改属性值用mutex加锁,这种操作方式称为原子性的(atomic),当类不会被多个线程使用,这么做会浪费。
将属性声明为非原子的(nonatomic),告诉编译器忽略mutex加锁机制。