本帖最后由 MacxChina 于 2015-2-6 19:10 编辑
{:3_57:}{:3_57:}
nonatomic是非原子:就是说不在多线程的时候就用这个属性会提高效率!
目的是:为了防止同一变量被不同的线程在某一时间段同时访问,经常都是必须加原子锁来保证操作的正确性!
给线程加锁的话。消耗是比较大的。
如果不加nonatomic属性,则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实例
在属性声明的时候,当不会在多线程下操作此成员的时候声明为非原子性能极大的提高效率!!
给你举个例子:
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
可以很明显的看出区别了吧!:):) |