2009-08-04 3 views
2

Я уже выяснил, что bool является C-типом, а BOOL - объектом Objective-C. bool может быть истинным или ложным, а BOOL может быть ДА или НЕТЦель-C: Ошибка BOOL и bool?

Для начинающих это может быть трудно отличить от этих типов. Есть ли что-то плохое, что может произойти, если я использую bool вместо BOOL?

ответ

5

BOOL является signed char, а bool является int (на самом деле, это typedef полукольцо как таковой в Дарвине при компиляции с предварительной C99 стандарты). Оттуда можно наблюдать обычное соображение при продвижении/понижении по типу между целыми типами.

4

В то время как у вас есть , возможно, сможет уйти с использованием bool вместо BOOL для ваших нужд, вы можете столкнуться с проблемами с передачей «bool» чему-то другому (например, публичному API-методу). Вы должны просто придерживаться BOOL при написании кода Objective-C, в основном для будущей проверки.

Но я не думаю, что что-то взорвется, если вы это сделаете, это просто очень не рекомендуется и не следует ни одному из соглашений Objective-C.

В качестве побочного примечания формат BOOL YES или NO является своего рода предложением, у меня была плохая привычка устанавливать BOOL в TRUE или FALSE (обратите внимание на все прописные буквы), и это не проблема. Вы также можете использовать 1 или 0.

Все это действует:

BOOL myBool; 
myBool = YES; // true 
myBool = TRUE; // true 
myBool = 1;  // true 
myBool = NO; // false 
myBool = FALSE; // false 
myBool = 0;  // false 
+2

Технически, myBool = 'Z' одинаково важен, но против семантики BOOL использовать ничего, кроме YES и NO. – Chuck

Смежные вопросы