美文网首页
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

    property属性 一般常用的property属性涉及到三个特性: 1.读写特性 2.所有者特性 3.原子特性 ...

  • 技术在于交流,知识在于收集(一)

    收集的一些iOS开发技术博客与牛人共同进步 iOS基础: OC语法基础 OC代码规范 从零学习iOS开发的15条建...

  • runtime

    runtime官方runtime中文 一、iOS 开发基础知ivars(实例变量)与@property(属性) O...

  • [iOS开发基础] 属性@property

    Objective-C的对象通常会把它需要的数据保存为各种实例变量,而访问这些实例变量一般会通过存取方法来访问,也...

  • iOS开发--OC基础

    对象方法的声明和实现 1.对象方法声明 2.对象方法实现 必须写在以@implementation开头,@end之...

  • iOS底层原理--oc

    在长期iOS开发中,oc是iOS的基础也是重中之重,相比runtime,runloop,多线程等知识都要重要的多,...

  • iOS面试之@property

    原文链接 @property介绍 相信做过iOS开发的同学都使用过@property,@property翻译过来是...

  • 面试技巧攻克(2)-Objective-C语言

    面试技术攻克(1)-iOS开发基础 面试技巧攻克(3)-OC高级特性 面试技巧攻克(4)-iOS中对象间通信机制 ...

  • 学习Swift语法基础记录

    本文内容:swift基础。使用人员:iOS开发,使用swift语言。 背景:OC开发数年了,最近开始尝试使用swi...

  • iOS开发中@property引伸的各种问题

    @property介绍 相信做过iOS开发的同学都使用过@property,@property翻译过来是属性。在定...

网友评论

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

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