我有一個iOS應用程序,從一開始就有一個錯誤。由於源是開始從模板構建,其appdelegate.h樣子:無法在@interface或@protocol中聲明變量
@interface myAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
myViewController *viewController;
}
BOOL myBool; // intended to be globally accessible
NSString *myString; // intended to be globally accessible
@end
我是指很多其他的.m源文件myBool和* myString的,爲全局變量。
在XCode 3.2.6下面,我不記得在編譯時遇到任何問題。
在3.2.6,在編譯時出現警告,指向appdelegate.h中的這些「全局」變量,並說:「無法在@interface或@protocol中聲明變量」。由於編譯或應用程序運行時沒有其他問題,所以不幸的是我沒有考慮這些警告。
現在,使用XCode 4.2,我無法編譯這個源代碼,因爲前面的警告變成了構建錯誤。他們引用並指向每個不同的.m文件中有「全局變量」引用的行。
考慮到我仍然想將這些變量/引用作爲全局變量或引用來訪問,是否有一種簡單的方法可以糾正這個問題?
其它問題:如果這個爲什麼沒有預警低於XCode的v3.2.6給出任何想法,只是警告3.2.6:當我評價迄今收到的答案(感謝各位),另一個問題從我身邊來說是一個真正的錯誤?爲什麼代碼仍然編譯並且可以毫無問題地運行?
作爲一個忠告,在這個意義上的「全局」變量通常是一個壞主意在面向對象編程中,因爲它們違背了局部性和封裝性。網上有很多關於這個主題的在線閱讀。 –