Несовместимое целочисленное преобразование указателя, присваивающее int * из int - PullRequest
19 голосов
/ 14 марта 2011

У меня есть еще одно неприятное предупреждение, которое я хотел бы убрать. По сути, я объявил int следующим образом: @property (nonatomic, assign) int *myInt; и установил так: myInt = 0;. Он также синтезируется в файле реализации. Я получаю предупреждение в строке, где я устанавливаю значение типа int, и там написано Incompatible intiger to pointer conversion assigning to 'int *' from 'int'. Что мне сделать, чтобы это исправить?

Ответы [ 4 ]

57 голосов
/ 14 марта 2011

В сообщении об ошибке есть большая подсказка!

В C и Objective C int является примитивным типом данных. Вы написали int *, что означает «указатель на int», тогда как похоже, что вы просто хотели получить int.

Так что поменяйте свою собственность на эту:

@property (nonatomic, assign) int myInt;

Для получения дополнительной информации, Google "указатели C", и вы найдете информацию, как это: http://pw1.netcom.com/~tjensen/ptr/pointers.htm

13 голосов
/ 28 марта 2012

Да, просто удалите звездочку (*) из декларации.

например ,.declare BOOL isChecked вместо BOOL * isChecked .

2 голосов
/ 05 января 2012

Другой способ решить эту проблему - просто не объявлять указатель (отбросить звездочку):

@interface ViewController : UIViewController {
    NSUInteger myObjcInt;  // unsigned ( >= 0 ) NSObject int, yo
}
1 голос
/ 26 октября 2012

int *MyInt - это указатель на int, а не на int.
Как говорили другие, просто удалите *, и у вас будет обычный int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...