ios логическое объявление var - PullRequest
5 голосов
/ 03 февраля 2012

Я объявил функцию с логическим вводом var.Я не получаю ошибок.Однако при вызове его с другого контроллера появляется уведомление: «несовместимое преобразование целочисленного значения в указатель, посылающее« BOOL »в параметр типа BOOL».Что я делаю неправильно?Спасибо.

- (void)composeBar: (BOOL *)savePars

с другой точки зрения:

AppDelegate *localFunction = [[UIApplication sharedApplication] delegate];

[localFunction composeBar:YES];

Ответы [ 2 ]

9 голосов
/ 03 февраля 2012

BOOL* не является логическим значением. Это указатель на логическое значение. Просто используйте

- (void)composeBar:(BOOL)savePars

Вероятно, вы запутались, потому что все объекты Obj-C объявлены с *, но это потому, что они на самом деле указатели. Однако BOOL - это не объект, а просто char, в котором содержится 0 или 1. Точно так же, как вы используете int для целого числа вместо int* (или в более идиоматическом коде, NSInteger), вы используете BOOL вместо BOOL*.

4 голосов
/ 03 февраля 2012

Это потому, что вы объявили функцию, принимающую указатель на логическое , а не логическое.Вот как должно выглядеть объявление:

- (void)composeBar: (BOOL)savePars

* сопровождает типы идентификаторов (то есть те, которые вы определяете через @interface/@implementation).Обычные типы C, перечисления, структуры и т. Д. Не требуют * в объявлении, если вы на самом деле не хотите передать указатель.

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