小编典典

属性“Nonatomic”是什么意思?

all

这段代码中的“非原子”是什么意思?

@property(nonatomic, retain) UITextField *theUsersName;

atomic and nonatomic有什么区别?


阅读 124

收藏
2022-04-26

共1个答案

小编典典

查看Apple 文档

基本上,如果您说nonatomic,并且使用 生成访问器@synthesize,那么如果多个线程尝试一次更改/读取该属性,则可能会发生错误。您可以获得部分写入的值或过度释放/保留的对象,这很容易导致崩溃。(不过,这可能比原子访问器快得多。)

如果您使用默认值(atomic过去没有关键字,但现在有),则@synthesized 方法使用对象级锁来确保对单个属性的多次读/写被序列化。正如 Apple 文档指出的那样,这并不意味着整个对象是线程安全的,但单个属性 reads/writes 是。

当然,如果您实现自己的访问器而不是 using @synthesize,我认为这些声明除了表达您对属性是否以线程安全方式实现的意图之外没有任何作用。

2022-04-26