2012-02-13 333 views
2

在Xcode/Objective C中:是否有可以強制訪問全局變量的語法。我注意到一個類變量默默地隱藏任何全局變量。看例子。不建議這是一個好主意,但只是好奇。訪問全局變量

int someVariable = 56; 

@implementation Example { 
    int someVariable; 
} 

- (void)print { 
    printf("Var=%i\n", someVariable); 
} 
+0

使用'-Wshadow'警告標誌通常是一件好事...然後這種東西不會再*沉默*了。 – Macmade 2012-10-02 23:29:33

回答

5

蘋果和大多數的Objective-C開發人員使用的約定是大寫全局名稱,如果該項目使用的前綴,前綴他們。因此,例如:

int SomeVariable = 56; 

int XYZSomeVariable = 56; 

這樣,你的全局名稱可以從不與實例變量(不類變量,順便名稱衝突 - 有沒有這樣的事情Objective-C),局部變量或參數,只要您遵守約定的另一半:本地名稱始終以小寫字母開頭。

編輯

我還要提到的是有在Objective-C的長期慣例前面加上下劃線,這也將有助於避免此類問題的實例變量名。實際上,LLVM 4.0自動合成功能現在會自動合成具有聲明屬性的下劃線前綴的ivars,除非您告訴它不要。因此,舉例來說,如果你已經宣佈的實例變量在您的示例如下:

@implementation Example 
{ 
    int _someVariable; 
} 

...伊娃不可能陰影全局變量。

+0

而且,只需使用'-Wshadow' ... – Macmade 2012-10-02 23:30:09