typedef signed char BOOL;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.
#if __has_feature(objc_bool)
#define YES __objc_yes
#define NO __objc_no
#else
#define YES ((BOOL)1)
#define NO ((BOOL)0)
#endif
上記は、iOS での BOOL の定義方法です。同じ方法に従って、値が ON OFF の別のブール値を定義しようとしており、以下のようにしました。
typedef signed char ONOFF;
#if __has_feature(objc_bool)
#define ON __objc_yes
#define OFF __objc_no
#else
#define ON ((ONOFF)1)
#define OFF ((ONOFF)0)
#endif
この型がパラメーターのオートコンプリートとして定義されている場合は、「ONOFF」ではなく「int」と記述します。ただし、BOOL タイプの場合は、正しく「BOOL」と記述します。
すべての面で BOOL と同様に機能するカスタムのブール型を作成することは可能ですか?
一部のプロパティでは、ON/OFF で可読性が向上するため、上記を試してください。
助言がありますか?
編集
YES/NO の代わりに ON/OFF を使用する簡単な回避策は次のとおりです。
typedef YES ON;
typedef NO OFF;
しかし、なぜ自分のブール型を作成できないのか疑問に思っています。