2012-08-06 152 views
0

这是一个纯粹的理论问题:正确使用变量名

我有一个具有可变类:VARx前提。 我有一个方法来改变这个变量。 Xcode中,带有自动完成建议:

-(void)setVarX:(float)varX; 

在实施中,当我写的实例方法时,Xcode告诉我一个警告:

“的 'VARx前提' 隐藏实例变量的地方声明”

的方法:

-(void)setVarX:(float)varX { 

    varX = varX; 

} 

因此,要解决的,我使用的undersco重新合成;

@synthesize varX = _varX; 

和方法是:

-(void)setVarX:(float)varX { 

    _varX = varX; 

} 

是适当的这样的变量前使用下划线?否则我该如何使用Xcode建议的方法的名称?

感谢

回答

1

的Xcode 4.4(或更高版本)具有属性的自动合成(从而不再需要@synthesize),当你不使用@dynamic。自动合成使用下划线,所以看起来苹果希望这是一个惯例。

首先,我不喜欢这个想法,但现在我明白了为什么它很方便。这些属性的变量名称在更多方法中不再“保留”(我在其他情况下从不使用下划线)。

2

使用_varX是正确的方法。如果你忽略了@synthesize行(从Xcode 4.4开始),它会自动生成一个具有该名称的实例变量。

+0

我想知道为什么XCode 4.4没有进行它应该的“自动合成”。忘记了下划线。 – Dustin 2012-08-06 16:17:47

0

请注意,更改实例变量名称会有效更改类,而更改方法参数名称则不会。

所以我喜欢做它周围的其他方法:

- (空)setVarX:(浮点)_varX {

varX = _varX; 

}

使实例变量的名称,是类外部可见接口的一部分,不需要改变。