2012-08-06 78 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; 

}

使實例變量的名稱,是類外部可見接口的一部分,不需要改變。