なぜ TrueOrFalse ではいけなかったのか……は調べようとも思わないので知りませんが
内部的には
YESorNO
#define YES (BOOL)1
#define NO (BOOL)0
というマクロとして定義されています。
で、 BOOL ってなんなのさ
BOOL
typedef signed char BOOL;
ということで、内部的には signed char の別名です。
比較の時に、なんか凄いバグ仕込まないように気をつけましょう。
でも、やっぱり TrueOrFalse で良かったんじゃ……。