0
我不太确定我是否正确理解原子。从我读的内容来看,它说原子是iPhone的默认设置。现在是仅用于属性或任何实例变量。例如,如果我有一个实例变量,我将编写自己的setter/getters,并且不将它声明为属性,那么是否会使该实例变量为原子?其缺点主要在于它针对线程进行了优化,而我的实例变量/应用程序可能甚至不需要?谢谢。实例变量,默认为原子
我不太确定我是否正确理解原子。从我读的内容来看,它说原子是iPhone的默认设置。现在是仅用于属性或任何实例变量。例如,如果我有一个实例变量,我将编写自己的setter/getters,并且不将它声明为属性,那么是否会使该实例变量为原子?其缺点主要在于它针对线程进行了优化,而我的实例变量/应用程序可能甚至不需要?谢谢。实例变量,默认为原子
属性声明中的atomic
关键字具有双重责任 - 既是文档又是合成访问器的指令。关键字只适用于访问器方法 - 手动访问ivars基本上与访问C结构相同,并且从来不是原子的。
如果您使用属性声明语法,您仍然可以编写自己的访问器,但如果这样做,则应遵守声明(如果不声明nonatomic
,则应手动实现原子性)。如果您的房产是@synthesize
,他们将自动遵循您的声明。
原子属性的缺点是它们使用锁定,这非常昂贵 - 如果该属性不会被多个线程访问,则应该始终声明它为nonatomic
(至少在iPhone上)。
怎么样声明浮动属性?我认为任何32位结构在iPhone上默认是原子的 – Pochi 2012-06-18 05:42:52