Property属性关键字

atomic            

nonatomic         

strong                   

retain                  

weak                     

assign                  

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

你可能感兴趣的:(Property属性关键字)