为什么原子和非原子概念已从 swift 中删除

Mah*_*a Y 4 atomic objective-c nonatomic swift swift3

swift 中没有 nonatomic 关键字,为什么 swift 中不需要 nonatomic,因为它存在于 Objective c 中。

Ark*_*kku 5

在 Swift 中,这nonatomic是默认(也是唯一)选择,因此它不是必需的,与 Objective-C 不同,atomic是默认但通常不是所需的行为。

至于为什么 Swift 不提供atomic,嗯,我猜它还没有被语言设计者视为必要的功能。当然,您可以通过同步、互斥、信号量等来实现原子属性。这些解决方案更加冗长,但也允许创建真正的线程安全类,这与仅atomic在 Objective-C 中创建所有属性不同。

  • +1 _“但通常不是所需的行为”_ 我已经多次看到`原子 NSArray/NSDictionary` 代码,它被神奇地期望保护数组操作 (2认同)