2009-08-27 72 views
12

我在.h文件中的@interface定義中有一個BOOL值。下面是它。無論是否是指針,它都有相同的問題。錯誤:帶'retain'屬性的'myBoolVariableName'屬性必須是對象類型

@interface myCustomViewController : UIViewController <UIWebViewDelegate> { 
{ 
//...more iboutlets defined above 
BOOL *myBoolVariableName; 
} 

當我編譯,我得到「錯誤:屬性‘myBoolVariableName’與‘保留’屬性必須是對象類型的」關於我的.h文件的導入線。

我在這裏找到了這個網頁約整數/ NSNumber的:

http://discussions.apple.com/thread.jspa?threadID=1846927

所以,似乎我不能使用@接口定義內的布爾值。我可以用什麼來代替?

我應該爲BOOL /布爾值做些什麼?

回答

33

我猜,後來在你的界面,你有這樣的事情:

@property (retain) BOOL *myBoolVariableName; 

這意味着使屬性誰的值是一個指向BOOL,並使用保留語義。

你的問題是,BOOL *是一個指向內存字節的指針,而不是指向對象的指針。保留是僅適用於對象的東西。

下面介紹如何製作布爾屬性。

@interface myCustomViewController : UIViewController <UIWebViewDelegate> { 
    BOOL myBoolVariableName; 
} 

@property myBoolVariableName; 

@end 

重要的區別在於變量聲明爲「BOOL」,而不是「BOOL *」和財產沒有(保留)。

+4

我不得不這樣做,但否則你就死對頭了。 :) 謝謝。 @property BOOL myBoolVariableName; – Neo42 2009-08-27 10:49:00

+0

這也適用於整數 – 2012-07-26 17:07:26

1

我也面臨過類似的情況。我解決了它喜歡,

@interface myCustomViewController : UIViewController { 
BOOL myBoolVariableName; 
} 
@property BOOL myBoolVariableName; 
@end 

我通過喬恩·赫斯是指一個答案,但我在它得到了一個錯誤。類型名稱需要說明符或限定符。 我以前的版本很喜歡,

@property myBoolVariableName; 

所以我添加BOOL和解決的問題。

相關問題