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 类型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静守晨昏‍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值