美文网首页
iOS开发-OC基础-@property

iOS开发-OC基础-@property

作者: 0可口可馨0 | 来源:发表于2016-09-18 20:38 被阅读0次

    property属性

    一般常用的property属性涉及到三个特性:

    1.读写特性

    2.所有者特性

    3.原子特性

    @property (nonatomic,readwrite,strong) NSString*price;

    提供成员变量的访问方法的声明、控制成员变量的访问权限、控制多线程时成员变量的访问环境。    property不但可以在interface,在协议protocol.和类别category中也可以使用。


    1.读写特性:readonly 、readwrite

    在Objective-C中,拥有这样两个读写特性:readwrite和readonly,意思简单明了,就是可读可写以及只读。默认情况下,属性默认是可读可写的。

    2.所有者特性

    所有者特性是针对OC的内存管理

    在Objective-C中,ARC下,拥有两个所有者特性:strong(默认缺省)和weak。

    strong:强引用,这个特性的属性将会成为对象的持有者(引用计数+1,被强引用的对象不会被释放)

    weak:弱引用,它声明的属性不会拥有这个对象的所有权,如果弱引用。(不会影响引用计数),weak常用于网络delegate属性

    相同点:指向的对象被dealloc的话,弱引用的对象会被自动设置为nil。

    3.原子特性

    简要来说,是针对多线程而设置的。Objective-C拥有两种原子特性,分别是atomic和nonatomic。我们知道,如果使用多线程的话,有时会出现两个线程互相等待而导致的死锁现象。使用atomic特性,Objective-C可以防止这种线程互斥的情况发生,但是会造成一定的资源消耗。这个特性是默认的。而如果使用nonatomic,就不会有这种阻止死锁的功能,但是如果我们确定不使用多线程的话,那么使用这个特性可以极大地改善应用性能。相比之下,swift目前还不支持这些特性。如果我们要实现线程安全,似乎只能使用objc_sync_enter此类的方法,来保证属性的处理只有一个线程在进行。或者使用属性观察器来完成这些操作。

    相关文章

      网友评论

          本文标题:iOS开发-OC基础-@property

          本文链接:https://www.haomeiwen.com/subject/zcjgettx.html