2010-06-02 64 views
1

当您查看一些Objective-C代码时,您经常会将类属性定义为非原子。为什么?当你不使用线程时,它是否会提升性能?还是有其他原因?可可非原子性质

+0

[Objective-C properties:atomic vs nonatomic]可能的重复(http://stackoverflow.com/questions/588866/objective-c-properties-atomic-vs-nonatomic) – bbum 2010-06-02 22:37:58

回答

5

nonatomic访问者速度更快,因为他们不必锁定。这就是关于它的一切。从documentation

如果不指定nonatomic,然后在引用计数的环境,对象属性合成get访问使用了锁,并保留和自动释放返回值的实施将类似于以下内容:如果指定nonatomic

[_internal lock]; // lock using an object-level lock 
id result = [[value retain] autorelease]; 
[_internal unlock]; 
return result; 

,那么对于一个对象的属性合成访问干脆直接返回值。

+0

感谢这么快速的回答。我之前知道非原子属性如何工作,我只是不知道使用它们的好处:-) – 2010-06-02 18:51:42