2011-04-12 72 views

回答

3

当一个属性未被声明为nonatomic时,合成访问器将使用锁来确保该属性是线程安全的。当不必要地使用锁时,会将不需要的消息添加到您的程序中。锁定操作本身也应该是原子的,这意味着处理器将锁定内存总线。这可能会减慢您的程序以及其他程序。如果某个属性不经常访问,那么您可能不会注意到其中的差异,但如果该属性将被频繁使用,则一定要使用它。总体而言,为什么不使用它?这是一些额外的字符,可能会导致您的程序加速。

+0

我的担心实际上是如果遇到死锁/比赛条件的风险/无论什么值得这个额外的表现。 – cfischer 2011-04-12 19:39:20

+1

你不应该在可用于多线程的东西上使用'nonatomic'。我猜我认为这很明显,因为当多线程可以访问某些内容时,原子性是必不可少的,而且你问是否在单线程应用程序中使用它是有益的。 – ughoavgfhw 2011-04-12 19:44:53

+0

问题是“值得吗?” - 如果不衡量特定的代码,这个问题就不能回答。 – 2012-11-06 19:58:58