可可非原子性质

Jak*_*édl 1 cocoa properties objective-c atomicity

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

Car*_*rum 5

nonatomic访问器更快,因为它们不必锁定.这就是它的全部内容.从文档:

如果未指定nonatomic,则在引用计数环境中,对象属性的合成get访问器使用锁并保留并自动释放返回的值 - 实现将类似于以下内容:

[_internal lock]; // lock using an object-level lock
id result = [[value retain] autorelease];
[_internal unlock];
return result;
Run Code Online (Sandbox Code Playgroud)

如果指定nonatomic,则对象属性的合成访问器只是直接返回值.