iOS开发中的属性声明

iOS开发中的属性声明

atomic:
原子操作在objective-c 属性设置里面 默认的就是atomic,
意思就是 setter /getter函数是一个原子操作,如果多线程同时调用setter时,
不会出现某一个线程执行完setter所有语句之前,另一个线程就开始执行setter,
相当于 函数头尾加了锁. 这样的话 并发访问性能会比较低.
nonatomic:
nonatomic则是直接从内存中取数值,因为它是从内存中取得数据,它并没有一个加锁的保护来用于cpu中的寄存器计算Value,它只是单纯的从内存地址中,当前的内存存储的数据结果来进行使用。所以在多线程中,我们应该对这样的变量进行nonatomic声明,因为它一直都能响应getter方法,防止你数据取到一半,结果数据释放了,或者数据 还在其他线程中正在写入。这就避免了
 取到的数据不是你预期的那一个(尽管这一个并不是 另外一个线程正在修改的数据)。

readonly

不可以被赋值

assign

所有属性都 默认 assign,通常用于标量(简单变量 int, float, CGRect等)

一种典型情况是用在对对象没有所有权的时候,通常是 delegate,避免造成死循环(如果用 retain的话会死循环)
retain

属性必须是 objc对象,拥有对象所有权,必须在 dealloc中 release一次。

copy

属性必须是 objc对象,拥有对象所有权,必须在 dealloc中 release一次。且属性必须实现 NSCopying协议
一般常用于NSString 类型

 

iOS开发中的属性声明,布布扣,bubuko.com

iOS开发中的属性声明

上一篇:iOS程序模拟器手机运行都正常,archiving出错:Undefined symbols for architecture arm64


下一篇:android获取系统剩余可用内存信息