0

这是一个纯理论问题:

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

-(void)setVarX:(float)varX;

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

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

方法:

-(void)setVarX:(float)varX {

    varX = varX;

}

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

@synthesize varX = _varX;

方法是:

-(void)setVarX:(float)varX {

    _varX = varX;

}

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

谢谢

4

3 回答 3

2

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

于 2012-08-06T15:59:57.280 回答
1

Xcode 4.4(及更高版本)@synthesize在您不使用@dynamic. 自动合成使用下划线,所以苹果似乎希望这是一个约定。

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

于 2012-08-06T15:59:46.640 回答
0

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

因此,我更喜欢反过来做:

-(void)setVarX:(float)_varX {

varX = _varX;

}

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

于 2012-08-09T08:30:24.863 回答