不兼容的整数转换为指针,从'int'分配给'int *'

22

我又遇到了一个很烦人的警告,希望能够解决。基本上,我声明了一个整型变量,代码如下:@property (nonatomic, assign) int *myInt; 然后这样设置:myInt = 0;。它也在实现文件中合成了。但是,在设置整数值的那一行上,我得到了一个警告,它说:Incompatible intiger to pointer conversion assigning to 'int *' from 'int'. 我该怎么办来解决这个问题呢?

4个回答

59

错误信息中有个很关键的提示!

在 C 和 Objective C 中,int 是一种基本数据类型。你写的是 int *,它表示“指向一个 int 的指针”,而你似乎只想要一个 int。

所以把你的属性改成这样:

@property (nonatomic, assign) int myInt;

如果需要更多信息,可以搜索"C指针",你会找到像这样的信息:http://pw1.netcom.com/~tjensen/ptr/pointers.htm


15

是的,只需要从声明中删除星号 (*)。

例如,声明 BOOL isChecked,而不是 BOOL * isChecked


3

int *MyInt 是一个指向 int 类型的指针,而不是一个 int 类型。
正如其他人告诉你的那样,只需去掉 *,就可以得到一个普通的 int 值。


2
另一种解决方法是不声明指针(去掉星号):
@interface ViewController : UIViewController {
    NSUInteger myObjcInt;  // unsigned ( >= 0 ) NSObject int, yo
}

这不是另一种方式 - 这就是Oculus所说的。顺便说一下,您的评论将其称为“NSObject int”,作为术语并没有太多意义。 - Chuck
2
触动了。我在搜索一个与 NSInteger 相关的问题时阅读到了这篇文章,而不是 Int。回复得有点太快了,我的错。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接