在Objective-C(桌面或iPhone平台)上使用非原子属性时,是否有一个很好的经验法则,而不是默认的原子属性?我理解差异 - 原子性以牺牲性能为代价来保证整个值 - 但是我看到的大多数例子都使用非原子属性(并且不稳定),因此显然需要原子性的环境和不具有原子性的环境。
任何人都可以为我提供一个简单的指导原则,以便我何时应该使用原子属性,何时应该支持非原子属性?
答案 0 :(得分:1)
您应尽可能支持nonatomic
。通常,这意味着只能从单个线程或属性设置/访问属性,这些属性的访问受某种高级同步的保护。重要的是要注意atomic
属性访问不保证线程安全。换句话说,依赖于atomic
属性值的算法本身必须是线程安全的,以使整个系统具有线程安全性。考虑到这一点,通常可以在保持系统线程安全的同时创建属性nonatomic
。