assign:用于基本数据类型,直接赋值。也可以用于对象,只不过当setter方法赋值时,只是简单存储地址,不会造成引用计数的改变,可以解决循环引用问题。
retain:用于对象类型,当赋值时,先将旧值释放,对新值retain引用计数加1
copy:用于对象类型,根据实现的NSCopying协议的copyWithZone:方法的不同,可以实现伪拷贝,浅拷贝,深拷贝。
readwrite: 可读可写特性。 当属性生成方法时,既生成setter方法,也生成getter方法。
readonly :只读特性 。当属性生成方法时,只会生成getter方法, 不会生成setter方法。
nonatomic :非原子性访问,当调用setter以及getter方法访问实例变量时,不会保证线程安全,但是访问效率高。
atomic:原子性访问,当调用setter以及getter方法访问实例变量时,会加多线程处理,访问时加锁,访问结束解锁,安全性高,但是访问效率低。