Ответ 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