OC-nonatomic和atomic相关
1.原子和非原子属性
1.1>OC在定义属性时又nonatomic和atomic两种选择
(1)atomic:原子属性,为setter方法加锁(默认就是atomic)
(2)nonatomic:非原子属性,不会为setter加锁
1.2>atomic加锁原理
@property (assign,atomic) int age;
-(void)setAge:(int)age{
@synchronized(self){
_age=age;
}
}
1.3>nonatomic和atomic对比
atomic:线程安全,需要消耗大量资源
nonatomic:非线程安全,适合内存小得移动设备
iOS开发建议:
(1)所有属性都声明为nonatomic
(2)尽量避免多线程抢夺同一块资源
(3)尽量将加锁,资源抢夺的业务逻辑交给服务器端处理,减小移动客户端的压力
线程GCD等 学习查询地址:http://www.cnblogs.com/ttgb/p/3805236.html
OC-nonatomic和atomic相关的更多相关文章
- 黑马程序猿-assign、retain、release、nonatomic、atomic、strong、weak
都是用于修饰@property声明的变量 assign:用于非oc对象类型,表示直接赋值(默认值) retain:用于mrc中,用于类属性中有oc对象的情况,表示先推断赋值的对象是否和实例对象变量的值 ...
- iOS 开发 nonatomic 和 atomic
nonatomic : 非原子属性 atomic : 原子属性 如果不写关键字 那么默认就是 原子属性 - 多线程写入属性时,保证同一时间只有一个线程能够执行写入操作 - 单(线程)写多(线程 ...
- Objective-C语法之nonatomic和atomic之间的区别
atomic: 保证 setter/getter 这两个方法的一个原语操作.如果有多个线程同时调用 setter 的话,不会出现某一个线程执行 setter 全部语句之前,另一个线程开始执行 set ...
- iOS开发学习-nonatomic和atomic的区别
nonatomic是非原子性的,也就是给线程不加原子锁,这样的代码运行效率会更高一点,例如: @property (nonatomic,copy)NSString *userName; @proper ...
- OC weak strong __weak __strong copy retain assign nonatomic atomic等关键字的总结
weak和strong的区别: weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它. 一旦最后一个strong型指针离去 ...
- iOS知识基础篇--@property,@synthesize, nonatomic,atomic,strong,weak,copy,assign,retain详解
一.@property 这个关键词的唯一作用就是声明getter.setter方法接口. 二.@synthesize 实现setter.getter方法,找不到实例变量则主动创建一个. 三.nonat ...
- 59 (OC)* atomic是否绝对安全
场景:如今项目中有这样一个场景,在一个自定义类型的Property在一个线程中改变的同时也要同时在另一个线程中使用它,使我不得不将Property定义成atomic,但是由此发现atomic并不会保证 ...
- 原子性atomic/nonatomic
原子性:并发编程中确保其操作具备整体性,系统其它部分无法观察到中间步骤,只能看到操作前后的结果. 决定编译器生成的getter和setter是否原子(natomic)操作. i 因此,atomic ...
- OC小结
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * a ...
随机推荐
- The EF 6.x DbContextGenerator templates are not available for VS2010
问题描述:采用VS2010.MVC3.EF6.1.1,并使用Model first的方式建立数据模型,创建了edmx文件.在edmx文件设计界面上,通过点选鼠标右键,Generate Database ...
- Oracle ODI系列之一(ODI知识模块)
Oracle ODI系列之一(ODI知识模块) ODI简介 ODI(Oracle Data Integrator)前身是Sunopsis Active Integration Platform ...
- android小知识之意图(intent)
android中的意图有显示意图和隐式意图两种, 显示意图要求必须知道被激活组件的包和class 隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件 A 主activity B ...
- 脑波设备mindwave TGCD接口开发示例
对于TGCD的开发,神念科技提供的文件包括,头文件thinkgear.h,thinkgear.lib,thinkgear.dll,有这三个文件,在win32下开发就不是什么难事了吧 如果是java语言 ...
- IE 中开发,兼容与性能测试工具汇总
前言 对于开发者来说, IE的兼容性是最让人头疼的. 因为是微软的产品, 且绑定在操作系统上, 所以IE的占用率还是相当大, 对于开发者来说, 这部分的兼容的考虑就不可避免了. 对于IE 的各版本来说 ...
- POJ 3169 Layout (图论-差分约束)
Layout Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6574 Accepted: 3177 Descriptio ...
- 标准C函数库的使用方法
本篇介绍若干经常使用的标准C函数的使用方法,主要介绍stdio(标准输入输出).math(数字函数库).time(时间函数库).stdlib(标准函数库)string(标准字符串函数)等. 最后更新 ...
- linux进程之fork 和 exec函数
---恢复内容开始--- fork函数 该函数是unix中派生新进程的唯一方法. #include <unistd.h> pid_t fork(void); 返回: (调用它一次, 它 ...
- FusionCharts 学习总结
FusionCharts和Charts一样都是对数据进行统计并绘制成图标的控件,但FusionCharts带有跨浏览器的flash图表组件解决方案,功能更为强大.. 在这里我将采用Js来加载Fusio ...
- 注册表:无法打开 XXX 由于某个错误无法打开该密钥。详细信息:拒绝访问
错误原因:没有注册表用户权限. 正确添加用户权限的步骤如下:(跟着图片步骤) 右击该项,权限: 选中想要添加为当前所有者的用户后,点击应用.如果没用户显示,可以从“其他用户或组”中添加进来. 权限添加 ...