![](/img/trans.png)
[英]Is there a difference between an "instance variable" and a "property" in Objective-c?
[英]Difference between a property and a global variable [objective c]
我想知道类的公共全局变量和类的属性之间的区别是什么(Objective-C主要是iOS编程)。 我唯一注意到的是,您必须使用指针符号->来访问类的全局变量,而不是点。
我已经读过,将代码从使用全局变量更改为使用属性可能是一个打破常规的程序。 是真的,如果是这样,为什么呢?
谢谢!
编辑:
块
, thanks] 公共全局变量(我想?)[编辑:我现在了解到这是一个 ,谢谢]
@interface Block : GameObject {
@public
int type;
SKEmitterNode *particles;}
属性
@property (nonatomic) CGFloat x;
不,这不是“全局变量”。
它称为实例变量。
属性通常(但不一定)具有关联的实例变量,但是现代的编译器对您隐藏了该变量。
使用实例变量之间的最大区别是,总是通过其访问器(在您的情况下为setX:(CGFLoat)x?
和-(CGFloat)x`来访问属性。
如果需要,可以覆盖这些访问器并进行特殊处理,例如,每当访问变量时。
始终可以通过直接使用实例变量来绕过访问器。 如果是自动合成的iVar,则为_x
。
请注意,在两种情况下都不需要->
即使类属性也不是全局变量,也由类变量支持。
但是有了一个属性,就有其他的网守来保护对变量的访问:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.