正确使用变量名称

时间:2012-08-06 15:56:33

标签: objective-c xcode variables

这是一个纯粹的理论问题:

我有一个包含变量的类: varX 。 我有一个方法来改变这个变量。 Xcode,自动完成建议:

-(void)setVarX:(float)varX;

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

  

“'varX'的本地声明隐藏实例变量”

方法:

-(void)setVarX:(float)varX {

    varX = varX;

}

所以,要解决,我在合成中使用了下划线;

@synthesize varX = _varX;

,方法是:

-(void)setVarX:(float)varX {

    _varX = varX;

}

以这种方式在变量之前使用下划线是否合适?否则我如何使用Xcode建议的方法名称?

感谢

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

当您不使用@synthesize时,Xcode 4.4(及更高版本)会自动合成属性(因此不再需要@dynamic)。自动合成使用下划线,因此Apple似乎希望这是一个惯例。

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

答案 2 :(得分:0)

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

因此我更喜欢反过来这样做:

- (void)setVarX:(float)_varX {

varX = _varX;

}

这样就不需要更改实例变量名,它是类外部可见接口的一部分。