1
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;

しかし、なぜ自分のブール型を作成できないのか疑問に思っています。

4

1 に答える 1

2

複雑にしないでおく?

typedef BOOL ONOFF;
#define ON YES
#define OFF NO
于 2013-09-04T10:08:35.153 に答える