error: property 'myBoolVariableName' with

2020-06-12 03:03发布

I have a BOOL value inside my @interface definition in my .h file. Here it is below. It has the same problem whether it's a pointer or not.

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

When I compile, I get "error: property 'myBoolVariableName' with 'retain' attribute must be of object type" on the line for the import of my .h file.

I found this page here about an integer / nsnumber:

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

So, it seems I can't use BOOL values inside an @interface definition. What can I use instead?

What should I do for BOOL / boolean values?

2条回答
家丑人穷心不美
2楼-- · 2020-06-12 03:21

I have faced similar situation. I solved it like,

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

I refer one answer by Jon Hess but I got one error in it. Type name requires a specifier or qualifier. My previous version was like,

@property myBoolVariableName;

So I added BOOL and solved the issue.

查看更多
走好不送
3楼-- · 2020-06-12 03:22

I'm guessing that later in your interface you have something like this:

@property (retain) BOOL *myBoolVariableName;

That means make a property who's value is a pointer to a BOOL, and use retain semantics.

Your problem is that BOOL * is a pointer to a byte of memory, not a pointer to an object. And retain is something that applies only to objects.

Here's how you can make a BOOL property.

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

@property myBoolVariableName;

@end

The important differences are that the variable is declared as "BOOL", not "BOOL *" and the property doesn't have (retain).

查看更多
登录 后发表回答