Incompatible integer to pointer conversion assigni

2020-02-08 08:21发布

问题:

I have yet another pesky warning I would like gone. Basically, I have an int declared like this: @property (nonatomic, assign) int *myInt; and set like this: myInt = 0;. It is also synthesized in the implementation file. I am getting a warning on the line where I set the int's value and it says Incompatible intiger to pointer conversion assigning to 'int *' from 'int'. What should I do to fix this?

回答1:

There's a big hint in the error message!

In C and Objective C, an int is a primitive data type. You've written int *, which means "a pointer to an int", whereas it looks like you just wanted an int.

So change your property to this:

@property (nonatomic, assign) int myInt;

For more info, google "C pointers" and you'll find information like this: http://pw1.netcom.com/~tjensen/ptr/pointers.htm



回答2:

Yes, simply remove asterisk (*) from declaration.

for example.declare BOOL isChecked instead of BOOL * isChecked.



回答3:

Another way to resolve this is to simply not declare a pointer (drop the asterisk):

@interface ViewController : UIViewController {
    NSUInteger myObjcInt;  // unsigned ( >= 0 ) NSObject int, yo
}


回答4:

int *MyInt is a pointer to int, not an int.
As others told you, just remove the * and you will have a regular int.