0

Вопрос по xcode, objective-c – BOOL настроен неправильно, вывод отладки сбивает с толку

Я пытаюсь установить BOOL в XCode, и по какой-то причине он просто отказывается работать. Ничто другое не устанавливает этот бул, только этот один экземпляр. Мой код ниже: .час @interface SuspectsViewController : UIViewController { BOOL ...

Привет всем, я имел обыкновение иметь это как bool = true, а не как BOOL, но на самом деле не должно быть никакой разницы с точки зрения определения, в любом случае, это даст шанс. И, к сожалению, мой код имеет длину около 500 строк, но он определенно не имеет глобальной переменной с тем же именем. Вот почему я так запутался в этом вопросе. Обычно это будет отображаться как предупреждение, если это все равно произойдет, не так ли?

от Elliott D'Alvarez

Привет, Кен, да, он появляется в & @asinterSupectViewController: UIViewController {BOOL boolContentChanged;} & apos; затем «@property (nonatomic) BOOL boolContentChanged;» Затем он синтезируется в .m и доступен, как упомянуто выше, с использованием «boolContentChanged = true». Нет другой ссылки на него, и нет других переменных с таким же именем. Я немного запутался, думаю, у меня была эта проблема раньше, но я не могу вспомнить, почему ...

от Elliott D'Alvarez

Фрагмент из вашего .h файла неоднозначен. Я подозреваю, что у вас есть как переменная экземпляра (синтезированная для вас), так и глобальная переменная с тем же именем, и вы ссылаетесь на другую в разных контекстах. Пожалуйста, покажите точный код.

от Ken Thomases

Objective-C использует<code>YES</code> а также<code>NO</code> логические литералы, а не<code>true</code> а также<code>false</code>, Не уверен, что это поможет ...

от trojanfoe

Позвольте мне переспросить по-другому: это<code>BOOL boolContentChanged;</code> от вашего фрагмента выше в фигурных скобках вашего<code>@interface</code>? подобно<code>@interface MyClass : SuperClass { BOOL boolContentChanged; /* other ivars */ } /* methods */ @end</code>?

от Ken Thomases

3 ответа

8

& Quot; ро & Quot; в отладчике (gdb) сокращение от «print-object».BOOL тип не является объектом Objective-C. Используйте & quot; p & quot; или & quot; распечатать & quot; отображать значениеBOOL, int, char, так далее.

Номер доллара («$ 4»), выводимый отладчиком в ответ на ваш «po» Команда присваивает результат переменной в отладчике, которую можно использовать в последующих командах.

Что касается проблемы, которую вы описываете, можете ли вы подтвердить, что ваш метод действия действительно вызывается? Попробуйте добавить:

NSLog( @"In %@", NSStringFromSelector( _cmd ));

на ваш-buttonPressed метод. Если ваше действие фактически вызывается, вы увидите это в отладчике:

In buttonPressed:

Вы также можете иметьNSLog() выведите значения вашегоBOOL:

NSLog( @"Before: %d", (int)boolContentChanged );
0

Мне наконец удалось выяснить, что происходит. Что касается отладчика, он действительно имел практическое значение, используя YES / NO, в отличие от true / false, значения все еще устанавливались, если я использовал p, чтобы явно найти их, но при использовании YES / NO они показывались бы автоматически. Итак, еще раз, кажется, что это intellisense, который не удается обновить в определенных ситуациях.

Спасибо всем за помощь.

-1

Когда вы используете BOOL, вам нужно использовать YES или NO, а не true и false.

Похожие вопросы