Objective-C 中 @property (nonatomic,copy)声明里 nonatomic的作用
来源:互联网 发布:java模拟http post请求 编辑:程序博客网 时间:2024/05/18 23:13
为了防止同一变量被不同的线程在某一时间段同时访问,必须加原子琐来保证某次操作的正确性。关于操作的原子性,我看过大神guancheng的一篇http://www.parallellabs.com/2011/04/09/pthread-mutex-lock-and-thread-safety/,这篇文简单的介绍下原子操作。
给线程加锁的消耗是比较大的,而我们在IOS中不是经常会多个线程访问一个同一个变量,为了提高效率,我们通常会在属性中这样声明:
@property (nonatomic,copy)NSString *userName;
有同学可能非常疑惑,这样做到底能提高多少效率呢?不这样做又怎样?好,下面我们来写个Demo。
1.首先我使用上面的声明的userName的声明
@property (nonatomic,copy)NSString *userName;- (void)viewDidLoad{ uint64_t begin = mach_absolute_time(); self.userName = @"username"; uint64_t end = mach_absolute_time(); NSLog(@"end - begin = %llu",end-begin);}
运行下结果是:
2012-07-12 19:57:59.679 NavigationDemo[635:f803] end - begin= 1236
2.然后我使用下面的声明@property (atomic,copy)NSString *userName;- (void)viewDidLoad{ uint64_t begin = mach_absolute_time(); self.userName = @"username"; uint64_t end = mach_absolute_time(); NSLog(@"end - begin = %llu",end-begin);}
运行的结果是:
NavigationDemo[726:f803] end - begin = 8330
3.可以明显看出声明为nonatomic能提高好几倍的效率,所以在属性声明的时候,当不会在多线程下操作此成员的时候声明为非原子性能极大的提高效率,希望看完这篇文后更多的同学能使用这个声明。
- Objective-C 中 @property (nonatomic,copy)声明里 nonatomic的作用
- IOS中 @property (nonatomic,assin)声明里 nonatomic的作用
- objective-c中nonatomic,assign,copy,retain的区别
- Objective-C declared @property attributes (nonatomic, copy, strong, weak)
- objective-c中nonatomic作用是什么?
- Objective-C中 copy, tetain, assign , readonly , readwrite, nonatomic区别
- objective-c -- nonatomic,assign,copy,retain 理解
- Objective-C中类属性的 copy, tetain, assign , readonly , readwrite, nonatomic区别
- Objective-c中copy,retain,assign,readonly,read write,nonatomic的区别
- Objective-C中类属性的 copy, tetain, assign , readonly , readwrite, nonatomic区别
- Objective-c中copy,retain,assign,readonly,read write,nonatomic的区别
- Objective-c中copy,retain,assign,readonly,read write,nonatomic的区别
- Objective-c中copy,retain,assign,readonly,read write,nonatomic的区别
- Objective-C中类属性的 copy, tetain, assign , readonly , readwrite, nonatomic区别
- Objective-C中类属性的 copy, retain, assign , readonly , readwrite, nonatomic区别
- Objective-C中的@property和@synthesize用法及参数(readwrite/readonly)(assign/retain/copy)(atomicity/nonatomic)
- Objective C - nonatomic & atomic:
- objective-C: nonatomic retain copy assgin 等属性详解
- 读 C语言深度解剖 笔记1
- 和菜鸟一起学linux之本地git中心仓库建立
- WINCE 半透明及透明位图的实现技术
- Mac OS中隐藏和显示文件的操作
- 坐标系变换经验
- Objective-C 中 @property (nonatomic,copy)声明里 nonatomic的作用
- Hibernate返回id比Oracle实际小1的问题
- MySql的CMake选项支持gcov和gprof
- 洗牌算法 数组打乱顺序 Fisher-Yates shuffle
- perl正则表达式
- Oracle/PLSQL: Replace Function
- 28个Unix/Linux的命令行神器
- javascript循环添加事件,总是获取最后一个值
- Perl目录操作