3

NSStringのゲッターまたはセッターを実装すると、次のように表示されます。

-(NSString *)nameOfSomething

ただし、ブール値を取得または設定する場合、何かを指すアスタリスクは使用しません

-(BOOL)nameOfSomething

なぜあなたはこれをしなければならないのだろうか?指すためにアスタリスクはまだ必要ではありませんか?ブール値がそれを必要としない特定の理由はありますか?

ありがとう

4

3 に答える 3

4

iOSをプログラムする前にCを学ぶことをお勧めします。これは、Objective-Cを使用するためであり、Objective-CはCです。プレーンデータ型とポインターには違いがあります。アスタリスクはポインターと関係があります。(Objective-Cの「オブジェクト」タイプはすべてポインターですが、Cには他のタイプがあります。)

iOSプログラミングに必要なCの最も重要な側面について、ここで説明します。

http://www.apeth.com/iOSBook/ch01.html

その章で説明されているように、BOOLはNSIntegerのようなものであり、オブジェクトではなく単なる数値です。

于 2013-03-24T16:01:15.680 に答える
1

これは、intと同じようにプリミティブ型です。理論的にはオブジェクトである可能性がありますが、非常に単純な概念であるため、ほとんど役に立ちません。

このアナロジーを考えてみましょう。(プリミティブ型の場合は左、クラスの場合は右)

int  : Integer    (Integer from java)
BOOL :  ---
 --- : NSString

等々。

本当にオブジェクトが必要な場合は、ラッパーを作成します。

于 2013-03-24T15:56:10.390 に答える
0

BOOLただsigned char、あなたはそのアドレス/参照を取りません。

直接割り当てます。

次のような定義が表示された場合:

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

%dではなく、その値を確認するために使用します%@

于 2013-03-24T15:55:12.403 に答える