我的.h文件中的@interface定义中有一个BOOL值。它在下面。它是否是一个指针也有同样的问题。
@interface myCustomViewController : UIViewController <UIWebViewDelegate> {
{
//...more iboutlets defined above
BOOL *myBoolVariableName;
}
当我编译时,我得到“错误:属性'myBoolVariableName','retain'属性必须是对象类型”,用于导入我的.h文件。
我在这里找到了关于整数/ nsnumber的页面:
http://discussions.apple.com/thread.jspa?threadID=1846927
所以,似乎我不能在@interface定义中使用BOOL值。我可以用什么呢?
我应该怎么做BOOL /布尔值?
答案 0 :(得分:33)
我猜你以后在界面中有这样的东西:
@property (retain) BOOL *myBoolVariableName;
这意味着创建一个属性,其值是指向BOOL的指针,并使用retain语义。
你的问题是BOOL *是指向内存字节的指针,而不是指向对象的指针。保留只适用于对象。
以下是制作BOOL属性的方法。
@interface myCustomViewController : UIViewController <UIWebViewDelegate> {
BOOL myBoolVariableName;
}
@property myBoolVariableName;
@end
重要的区别是变量被声明为“BOOL”,而不是“BOOL *”,而属性没有(保留)。
答案 1 :(得分:1)
我遇到过类似的情况。我解决了它,
@interface myCustomViewController : UIViewController {
BOOL myBoolVariableName;
}
@property BOOL myBoolVariableName;
@end
我引用了Jon Hess的一个答案,但我收到了一个错误。类型名称需要说明符或限定符。 我之前的版本就像,
@property myBoolVariableName;
所以我添加了BOOL
并解决了问题。