11

iOS には、ブール値に適していると思われる多くのオプションがあるようです。

YES
NO
TRUE
FALSE
true
false

どちらを使用する必要がありますか? この特定のケースでは、ラベルを非表示にしているので、hiddenプロパティをYESTRUE、またはに設定する必要がありますかtrue?

4

5 に答える 5

13

簡単な答え: type の基礎プロパティを設定するにはYES、 とを優先する必要があります。NOBOOL

長い答えについては、まずこれらの定数が定義されている場所を見てみましょう。

  • trueからfalseですstdbool.h。それらは#define-d as1および0
  • TRUEからFALSEですCFBase.h。それらは#define-d as1および0
  • YESNOからNSObjCRuntime.hです。これはsigned charis typedef-ed asBOOLであり、その 2 つの値は#define-d as((BOOL)1)および((BOOL)0)or __objc_yes/ __objc_noifobjc_boolがサポートされている場合です。

基礎クラスは一貫してforでBOOLある を使用して、ブール値のプロパティを表します。最初の 2 つのペアは定数に変換されるため、それらを使用すると警告が表示される可能性がありますが、いずれにしても正しく動作する可能性があります。ただし、および定数は、バージョンに関係なく、コンパイラにとって最も互換性のある方法で定義されています。したがって、コード全体で一貫してandを使用することをお勧めします。typedefsigned charintYESNOYESNO

于 2013-01-03T12:21:59.517 に答える
6

YES実際には と の間に違いはなくTRUE、それらはすべて1trueで表される真の状態を表します。

そしてNOfalse0FALSEで表される偽の状態を表します。

以下も使用できます。

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 との直接比較が失敗するためです。

ここにあなたのための素敵な記事があります.

于 2013-01-03T12:09:46.253 に答える
2

私はそれらのすべてが大丈夫だと思います。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 で宣言

于 2013-01-03T12:22:08.220 に答える
0

私はこれについてあなたの見解を共有しますが、現在それらはすべて同じように定義されていますが、TRUE != true が見つかった場合、コードの移植は面倒です。 (いくつかの言語では -1 を使用し、一部の言語では 1 を使用するため、TRUE について X == 1 をテストしてはならない正確な理由)

それは個人的な好みであり、主に将来のポートについてだと思います。

C/C++ への移植が容易になるように、TRUE および FALSE オプションに従います。

定期的にコードを Java に変換している場合は、true と false の方が優れていることがわかるかもしれません。そのため、検索/置換が少なくなりますが、Cocoa との一貫性がより簡単であることがわかりました。

于 2013-01-03T12:15:20.637 に答える
0

YES と NO を使用することは、TRUE と FALSE または 1 と 0 をそれぞれ使用することと同じです。

NSLog を使用して、この小さな例のように結果を表示します。

BOOL result;
result = YES;
NSLog(@"my boolean result is %@",result ? @"Yes" : @"No");
于 2013-07-30T14:14:26.290 に答える