1

同じクラスのオブジェクトを 2 つ作成します。メソッドでこれを行うとき:

NSLog(@"This object is on address %p\n",&self);`

同じクラスの 2 つの異なるオブジェクトに対して同じアドレスを取得します。

クラスの外でこれを行うと:

NSLog(@"This object is on address %p\n",&myObject);
and
NSLog(@"This object is on address %p\n",&anotherObject);

私は 2 つの異なるアドレスを取得します。自己がどのように機能するかについて何かが欠けていますか? オブジェクトへのポインタであってはいけませんか?

別の角度: オブジェクトのクラスのメソッド内からオブジェクトのアドレスを取得するにはどうすればよいですか?

お時間をいただきありがとうございます。

4

2 に答える 2

5

Objective C では、クラスへの参照は既にポインターです。selfまたはのアドレスをmyObject取得することにより、変数が格納されているアドレスを取得しています (スタック上にある可能性があります)。

したがって、印刷するだけです:

NSLog(@"This object is on address %p\n", self);

また

 NSLog(@"This object is on address %p\n", myObject);

クラスの住所を出力します。

于 2012-12-23T23:29:01.053 に答える
0

変数のアドレスを渡す%p必要はないと思います。これは void* 操作です。これを自分でテストするために開発マシンにいるわけではありませんが、次のことを試してください。

NSLog(@"This object is on address %p\n", self);
于 2012-12-23T23:21:14.210 に答える