1

我创建了同一类的 2 个对象。当我在一个方法中这样做时:

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

对于同一类的两个不同对象,我得到相同的地址。

当我在课外这样做时:

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

我确实得到了两个不同的地址。我是否缺少有关自我工作方式的信息?它不应该是指向对象的指针吗?

不同的角度:如何从对象类的方法中获取对象的地址?

感谢您的时间。

4

2 回答 2

5

在 Objective C 中,对类的引用已经是一个指针。通过获取selfmyObject获取存储变量的地址(可能在堆栈上)。

所以只是打印:

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 回答