4

我正在將舊iPhone應用程序從Xcode 3遷移到Xcode 4.我在代碼中收到此錯誤,該代碼曾用於構建Xcode 3 - - 實際上我是這樣寫的,目的是隱藏其他模塊的實現細節。然而,Objective-C中的某些東西似乎發生了變化。此代碼現在會收到錯誤將代碼從Xcode 3移動到4會產生錯誤:無法在@interface或@protocol中聲明變量

Cannot declare variable inside @interface or @protocol.

請記住,這是在.m文件不是.H

@interface VisualViewController() 
BOOL doReloadPhoto; 

+ (void)buildVisualEffectInfo; 

@property (nonatomic, retain) HandleCheckListSetting *checkListHandler; 
@end 

回答

9

這可能以前編譯的頂部代碼,但我不認爲它正在做你認爲正在做的事情。這聽起來像你想創建一個私人伊維爾在一個類擴展。你的語法只是一個頂級變量,不過,相當於:

BOOL doReloadPhoto; 

@interface VisualViewController() 
// etc. 
@end 

你需要把它放在大括號內爲它是伊娃:

@interface VisualViewController() 
{ 
    BOOL doReloadPhoto; 
} 

(相反,我我不確定這是否可以用Xcode 3的編譯器進行擴展 - 這可能就是你按照你的方式完成的原因。)這聽起來像編譯器現在(明智地)指出你所擁有的代碼可能沒有達到你期望的水平,並迫使你完全清楚你的意圖。

這也recenty成爲可能在@implementation塊聲明私有實例變量,使用相同的語法:

@implementation VisualViewController 
{ 
    BOOL doReloadPhoto; 
} 
+0

哇我不知道你能做到這一點的實現了。很酷。 – 2012-04-28 19:42:29

+2

@Jack:這實際上現在是Apple推薦的做法。我喜歡它。它讓人感覺更加百萬倍; ivars確實是實現的一部分,而不是接口。 – 2012-04-28 19:42:53

+0

@JacquesCousteau +1。我也不知道。你每天學習新的東西。 ;) – 2012-04-28 19:47:13

相關問題