atomic
nonatomic
copy
readonly
readwrite
unafe_unretained
atomic
原子类型,属性的property默认关键字为atomic原子性,提供线程安全的。
优点:OC中是一个同步锁机制的线程安全策略,为了防止在多线程的环境下:当两个线程去访问一个属性,当线程A先访问这个属性,并修改了变化,没有写入到属性,线程b就已经放了这个属性,并获取到了没有改变之前的值,最终造成数据错误。
缺点:这种机制是耗费系统资源的,并且效率上也有所减少。
nonatomic
非原子类型,
优点:提高性能,消耗更少的资源
缺点:线程不安全,两个线程同时访问,最终造成上述数据错误。
strong
创建对象引用计数+1,每次被引用引用计数+1,release引用计数-1,当引用计数为0时dealloc函数调用收回内存。
retain
对其他NSObject和其子类对参数进行release旧值,再retain新值 指定retain会在赋值时唤醒传入值的retain消息。此属性只能用于Objective-C对象类型,不能用于基础数据类型跟 C数据类型。
weak
不会增加对象引用计数,也不会持有对象,因此不能决定是释放该对象,他比assign多了一个功能,就是当持有该对象的对象消失后自动将指针置nil
assign
简单的赋值操作,不会改变引用计数,适用于基础数据类型(NSUInteger CGFloat)等和C数据类型(int float char long)。
copy
创建一个引用计数为1的一个对象,释放旧对象,然后赋值,此属性只对那些实行了NSCopying协议的对象类型有效。copy方法默认是复制该对象的不可变副本。
readonly
此属性只能读
readwrite
此属性读写,默认属性
unafe_unretained
跟weak一样是一个弱引用,引用计数为0时,不会自动置nil