我创建了同一个类的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);
我确实得到两个不同的地址。 我错过了一些关于自我运作的事情吗?它不应该是指向对象的指针吗?
不同的角度: 如何从该对象的类的方法中获取对象的地址?
感谢您的时间。
答案 0 :(得分:5)
在Objective C中,对类的引用已经是指针。通过获取self
或myObject
的地址,您将获得存储变量的地址(可能在堆栈中)。
所以只是打印:
NSLog(@"This object is on address %p\n", self);
或
NSLog(@"This object is on address %p\n", myObject);
将打印班级的地址。
答案 1 :(得分:0)
我相信%p
不要求您传递变量的地址。这是一个无效*操作。我不是在我的开发机器上自己测试,但尝试做:
NSLog(@"This object is on address %p\n", self);