1

UIViewControllerのデフォルトの説明の数値は何ですか?私はそれがインスタンスアドレス、またはおそらくハッシュであると予想していましたが、この理論をテストしたとき、これは私が得たものです:

NSLog(@"Self [%@]", self);
NSLog(@"Address [%p]", &self);
NSLog(@"Hash [%d]", [self hash]);

2012-09-26 10:28:00.202 QuickList7[85957:c07] Self [<SelectCategoryViewController: 0xa42fc60>]
2012-09-26 10:28:00.202 QuickList7[85957:c07] Address [0xbfffdea8]
2012-09-26 10:28:00.203 QuickList7[85957:c07] Hash [172162144]

UIViewControllerまたはそのスーパークラスのリファレンスで説明を見つけることができませんでした-誰か知っていますか?

4

2 に答える 2

3

これは、デフォルトのdescription実装を使用する他の実装と同様に、実際にはインスタンスアドレスです。NSOBject

ただし、インスタンスアドレスは、型であり、すでにポインタであるため、すでにself変数に含まれています。例のようにのポインタ値を出力すると、実際にはタイプのように、インスタンスのアドレスではなく、ポインタのアドレス(ポインタへのポインタ)が出力されますselfUIViewController*&self&selfUIViewController**

NSLog(@"%p", self)代わりにを使用すると、で使用されて表示さNSLog(@"%p", &self)れたものと同じアドレスが印刷されます。descriptionNSLog(@"%@", self)

于 2012-09-26T14:53:16.380 に答える
1

インスタンスアドレスです。2行目では、インスタンスへのポインターのアドレスを出力しています(これはスタック上にあり、アドレスがで始まる理由0xbfffです)。インスタンスポインタ自体ではありません。を使用してオブジェクトとしてNSLog(@"%p", self);印刷した場合に表示されるのと同じ値が表示されます。self%@

于 2012-09-26T14:52:38.813 に答える