4

私が理解していることから(そして私が間違っている場合は私を訂正してください):

int x, count = 10;
int *hello;
hello = &count;
x = *hello;

ここで、変数xとcountは整数型であると宣言されています。さらに、変数countには値10が割り当てられます。

helloは整数型へのポインタです。次に、helloにカウントのアドレスが割り当てられます。countの値にアクセスするには、helloの前にアスタリスク(* hello)を付ける必要があります。

したがって、xには、カウントされているものすべての値(この場合は10)が割り当てられます。

でも...

Fraction *myFraction = [[Fraction alloc] init];
[myFraction someMethod];

ここで、私が正しく理解していれば、myFractionはFractionクラスのインスタンスへのポインターです。

myFractionは、メモリが割り当てられ、初期化されたオブジェクトを指しています(またはアドレスが割り当てられています)。

確かに、myFractionが指すオブジェクトにアクセスするには、次のように記述する必要があります。

 [*myFraction someMethod];

xがcountの値にアクセスする方法を考えると、確かにオブジェクトにアクセスするためには、これを書くべきであり、次のように書くべきではありません。

[myFraction someMethod]; 

また、もし私が持っていれば

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *str = @"Programming can be a headache";
NSLog (@"%@\n", str);

strが上記のオブジェクトとして扱われるのはなぜですか?または、strはオブジェクトであり、その場合、なぜNSStringクラスのインスタンスを指すようにしたいのでしょうか。確かに、オブジェクトをstrに割り当てることができるはずですか?

4

2 に答える 2

5

Objective cでのオブジェクトの使用はすべて、ポインタなどのオブジェクト参照を介して行われます。

  • Objective Cの構文を使用すると、オブジェクトを逆参照せずに処理できます。これは、C /C++とは異なります。
  • strはタイプNSString(as myFraction@"Programming can be a headache"のオブジェクト参照であり、タイプのオブジェクト参照でNSStringもあるため、に割り当てることができますstr
于 2012-05-05T10:58:39.200 に答える
1

ビニャミンに加えて

  • 括弧[]内のすべてはObjective-Cであり、単純なCではありません(したがって、[* object message]の使用は一般的ではありません)
  • [オブジェクトメッセージ]、あなたはあなたのオブジェクトに「メッセージ」を送ります、そしてオブジェクトは何かで応答します(彼は何かを返すことができるか、彼は何も返さずに何かをすることができます)。
  • 左側に*が付いているものはすべてポインタです。したがって、*strはポインタです。そして、それはどこにあるのでしょうか?オブジェクトNSStringに。@ "blabla"は、コンパイラによって直接生成された1つのCONSTANT文字列のアドレスを返します。
  • NSLog(@ "%@ \ n"、str); ここで、%@はstrと呼ばれるNSStringオブジェクトの+Descriptionクラスメソッドを呼び出します。デフォルトでは、NSStringオブジェクトの説明は文字列(テキスト)の値を返します。%@は、%dのように数字(int、doubleなど)に置き換える単純なものではありません。すべてのオブジェクトには、NSObjectから継承する+ Descriptionメソッドがあります(注はClassメソッドであり、インスタントではありません)。

説明

受信クラスの内容を表す文字列を返します。

  • (NSString *)説明
于 2012-05-05T12:40:23.693 に答える