错误:带有'retain'属性的属性'myBoolVariableName'必须是对象类型

时间:2009-08-27 00:21:56

标签: objective-c iphone boolean

我的.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 /布尔值?

2 个答案:

答案 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并解决了问题。