我想知道类的公共全局变量和类的属性之间的区别是什么(Objective-C主要是iOS编程)。我注意到的只有你必须使用指针表示法 - >访问类的全局变量而不是点。
我已经读过,将代码从使用全局变换为使用属性可能会破坏程序。这是真的,如果是的话,为什么?
谢谢!
编辑:
Block.h
Public Global Variable(我想?)[编辑:我现在明白这是实例变量,谢谢]
@interface Block : GameObject {
@public
int type;
SKEmitterNode *particles;}
属性
@property (nonatomic) CGFloat x;
答案 0 :(得分:2)
不,这不是“全局变量”。
它被称为实例变量。
属性通常(但不一定)具有关联的实例变量,但现代编译器会隐藏这些属性。
使用实例变量之间的最大区别在于,始终通过其访问器访问属性(在您的情况下为setX:(CGFLoat)x?
和 - (CGFloat)x`。
如果您愿意,可以覆盖这些访问者,并在访问变量时进行特殊处理。
始终可以直接使用实例变量绕过访问器。在自动合成的iVar的情况下,这将是_x
。
请注意,在任何一种情况下都不需要->
答案 1 :(得分:1)
即使类属性也是类变量支持,即使它不是全局的。
但是对于一个属性,有一个额外的看门人守护变量: