NSStringのゲッターまたはセッターを実装すると、次のように表示されます。
-(NSString *)nameOfSomething
ただし、ブール値を取得または設定する場合、何かを指すアスタリスクは使用しません
-(BOOL)nameOfSomething
なぜあなたはこれをしなければならないのだろうか?指すためにアスタリスクはまだ必要ではありませんか?ブール値がそれを必要としない特定の理由はありますか?
ありがとう
NSStringのゲッターまたはセッターを実装すると、次のように表示されます。
-(NSString *)nameOfSomething
ただし、ブール値を取得または設定する場合、何かを指すアスタリスクは使用しません
-(BOOL)nameOfSomething
なぜあなたはこれをしなければならないのだろうか?指すためにアスタリスクはまだ必要ではありませんか?ブール値がそれを必要としない特定の理由はありますか?
ありがとう
iOSをプログラムする前にCを学ぶことをお勧めします。これは、Objective-Cを使用するためであり、Objective-CはCです。プレーンデータ型とポインターには違いがあります。アスタリスクはポインターと関係があります。(Objective-Cの「オブジェクト」タイプはすべてポインターですが、Cには他のタイプがあります。)
iOSプログラミングに必要なCの最も重要な側面について、ここで説明します。
http://www.apeth.com/iOSBook/ch01.html
その章で説明されているように、BOOLはNSIntegerのようなものであり、オブジェクトではなく単なる数値です。
これは、intと同じようにプリミティブ型です。理論的にはオブジェクトである可能性がありますが、非常に単純な概念であるため、ほとんど役に立ちません。
このアナロジーを考えてみましょう。(プリミティブ型の場合は左、クラスの場合は右)
int : Integer (Integer from java)
BOOL : ---
--- : NSString
等々。
本当にオブジェクトが必要な場合は、ラッパーを作成します。
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
ではなく、その値を確認するために使用します%@
。