本当に簡単な質問です。これらの値には違いがありますか (また、BOOL と bool には違いがありますか)? 同僚が、Objective-C ではこれらが異なる値に評価されると言っていましたが、それぞれの .h ファイル内の typedef を見ると、YES/TRUE/true はすべて として定義され1
、NO/FALSE/false はすべて として定義されていました0
。本当に違いがあるのでしょうか?
ベストアンサー1
私はそこに信じているはbool
との違いについてはBOOL
、この Web ページでその理由の説明を確認してください。
http://iosdevelopertips.com/objective-c/of-bool-and-yes.html
BOOL
はプリミティブ型ではなく であるためunsigned char
、 型の変数にはBOOL
および 以外の値を含めることができますYES
。NO
次のコードを考えてみましょう:
BOOL b = 42;
if (b) {
printf("b is not NO!\n");
}
if (b != YES) {
printf("b is not YES!\n");
}
出力は次のようになります。
b は NO ではありません!
b は YES ではありません!
ほとんどの人にとってこれは不必要な懸念ですが、本当にブール値が必要な場合は を使用する方がよいでしょうbool
。iOS SDK は一般にBOOL
インターフェース定義で を使用するので、 を使用することをお勧めしますBOOL
。