iOS には、ブール値に適していると思われる多くのオプションがあるようです。
YES
NO
TRUE
FALSE
true
false
どちらを使用する必要がありますか? この特定のケースでは、ラベルを非表示にしているので、hidden
プロパティをYES
、TRUE
、またはに設定する必要がありますかtrue
?
簡単な答え: type の基礎プロパティを設定するにはYES
、 とを優先する必要があります。NO
BOOL
長い答えについては、まずこれらの定数が定義されている場所を見てみましょう。
true
からfalse
ですstdbool.h
。それらは#define
-d as1
および0
TRUE
からFALSE
ですCFBase.h
。それらは#define
-d as1
および0
YES
とNO
からNSObjCRuntime.h
です。これはsigned char
is typedef
-ed asBOOL
であり、その 2 つの値は#define
-d as((BOOL)1)
および((BOOL)0)
or __objc_yes
/ __objc_no
ifobjc_bool
がサポートされている場合です。基礎クラスは一貫してforでBOOL
ある を使用して、ブール値のプロパティを表します。最初の 2 つのペアは定数に変換されるため、それらを使用すると警告が表示される可能性がありますが、いずれにしても正しく動作する可能性があります。ただし、および定数は、バージョンに関係なく、コンパイラにとって最も互換性のある方法で定義されています。したがって、コード全体で一貫してandを使用することをお勧めします。typedef
signed char
int
YES
NO
YES
NO
YES
実際には と の間に違いはなくTRUE
、それらはすべて1true
で表される真の状態を表します。
そしてNO
、false
は0FALSE
で表される偽の状態を表します。
以下も使用できます。
BOOL aBool = 1;
BOOL aBool = true;
これはandBOOL aBool = TRUE;
と 同等ですBOOL aBool = YES;
しかし:
BOOL bBool = 7;
if (bBool)
{
NSLog(@"bBool is YES!\n");
}
if (bBool != YES) {
NSLog("bBool is not YES!\n");
}
次のように出力されます。
b is YES!
b is not YES!
これは、BOOL
型の値が 1 以外のゼロ以外の値の場合、YES との直接比較が失敗するためです。
ここにあなたのための素敵な記事があります.
私はそれらのすべてが大丈夫だと思います。YES
でも個人的には/を使いたいNO
です。
Objective-C Runtime Referenceというドキュメントを見つけました:
ブール値 これらのマクロは、ブール値を表す便利な定数を定義します。
#はいを定義 (BOOL)1
#いいえを定義 (BOOL)0定数
YES
YES を 1 として定義します
。iOS 2.0 以降で使用できます。
NSObjCRuntime.h で宣言されています。NO
NO を 0 として定義
します。iOS 2.0 以降で使用できます。
NSObjCRuntime.h で宣言されています。
objc.h で宣言
私はこれについてあなたの見解を共有しますが、現在それらはすべて同じように定義されていますが、TRUE != true が見つかった場合、コードの移植は面倒です。 (いくつかの言語では -1 を使用し、一部の言語では 1 を使用するため、TRUE について X == 1 をテストしてはならない正確な理由)
それは個人的な好みであり、主に将来のポートについてだと思います。
C/C++ への移植が容易になるように、TRUE および FALSE オプションに従います。
定期的にコードを Java に変換している場合は、true と false の方が優れていることがわかるかもしれません。そのため、検索/置換が少なくなりますが、Cocoa との一貫性がより簡単であることがわかりました。
YES と NO を使用することは、TRUE と FALSE または 1 と 0 をそれぞれ使用することと同じです。
NSLog を使用して、この小さな例のように結果を表示します。
BOOL result;
result = YES;
NSLog(@"my boolean result is %@",result ? @"Yes" : @"No");