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

Neo*_*o42 12 iphone boolean objective-c

我的.h文件中的@interface定义中有一个BOOL值.它在下面.它是否是一个指针也有同样的问题.

@interface myCustomViewController : UIViewController <UIWebViewDelegate> {
{
 //...more iboutlets defined above
 BOOL *myBoolVariableName;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到"错误:属性'myBoolVariableName','retain'属性必须是对象类型",用于导入我的.h文件.

我在这里找到了一个关于整数/ nsnumber的页面:

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

所以,似乎我不能在@interface定义中使用BOOL值.我可以用什么呢?

我应该怎么做BOOL /布尔值?

Jon*_*ess 33

我猜你以后在你的界面中有这样的东西:

@property (retain) BOOL *myBoolVariableName;
Run Code Online (Sandbox Code Playgroud)

这意味着创建一个属性,其值是指向BOOL的指针,并使用retain语义.

您的问题是BOOL*是指向内存字节的指针,而不是指向对象的指针.保留只适用于对象.

以下是制作BOOL属性的方法.

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

@property myBoolVariableName;

@end
Run Code Online (Sandbox Code Playgroud)

重要的区别是变量声明为"BOOL",而不是"BOOL*",属性没有(保留).

  • 我不得不这样做,但除此之外,你已经死了.:) 谢谢.@property BOOL myBoolVariableName; (4认同)