Объективные c булевых значений

Мне было интересно, какая разница между следующими значениями в объекте c:

TRUE(uppercase) - true(lowercase) - yes
FALSE(uppercase) - false(lowercase) - no

они различаются по-разному в IDE, существуют ли разные ситуации, когда вы будете использовать разные логические значения?

Спасибо

Ответ 1

Эти значения окрашены по-разному, поскольку они используются в двух разных типах - BOOL и BOOL и являются разными языковыми конструкциями.

BOOL - это переопределение макроса signed char, что означает, что оно может иметь более двух значений, а при отображении NO/FALSE == 0, YES/TRUE == 1, вы должны быть осторожны при написании булевых выражений и рассматривать любое ненулевое значение как истинное. Значения, которые могут быть назначены BOOL, определяются как макросы и соответственно окрашены.

Между тем, BOOL, с другой стороны, является истинным булевым типом и может иметь только два значения - TRUE и FALSE. Его значения являются конструкциями на родном языке и окрашены как таковые.

Вот несколько других обсуждений по этой теме:
Есть ли разница между YES/NO, TRUE/FALSE и true/false в objective-c?
Objective-C: BOOL vs bool