1. ホーム
  2. c

[解決済み】Objective-C:BOOLとboolの比較

2022-04-14 14:52:13

質問

新型を見ました。 BOOL ( YES , NO ).

この型はほとんどcharのようなものだと読みました。

テストのために、私は:

NSLog(@"Size of BOOL %d", sizeof(BOOL));
NSLog(@"Size of bool %d", sizeof(bool));

両方のログに "1" が表示されるのは良いことです (C++ では bool は int で、その sizeof は 4 であることがあります)。

ということで、bool型に何か問題があるのかと思っていたのですが、どうなんでしょう?

速度を落とさずにbool(使えそうなもの)だけでいいのでしょうか?

どのように解決するのですか?

の定義から objc.h :

#if (TARGET_OS_IPHONE && __LP64__)  ||  TARGET_OS_WATCH
typedef bool BOOL;
#else
typedef signed char BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used.
#endif

#define YES ((BOOL)1)
#define NO  ((BOOL)0)

そう、BOOLはcharと仮定していいんですね。あなたは、(C99)の bool しかし、Apple の Objective-C フレームワークとほとんどの Objective-C/Cocoa コードでは BOOL を使っているので、BOOL を使っておけば、型定義が変更されたときに頭痛の種にならずにすみます。