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或它的超类的解释--有人知道吗?
发布于 2012-09-26 22:53:16
对于使用NSOBject的默认实现的任何其他description实现来说,这确实是实例地址。
但是实例地址已经在self变量中,因为self的类型是UIViewController*,并且已经是一个指针。打印 &self 的指针值,就像您在示例中所做的那样,打印指针的地址(指向指针的指针),而不是实例的地址,因为&self确实是UIViewController**类型。
如果您使用NSLog(@"%p", self)而不是NSLog(@"%p", &self),您将看到打印的地址与description使用的地址相同,并与NSLog(@"%@", self)一起显示。
发布于 2012-09-26 22:52:39
它是实例地址。在第二行中,您将打印指向实例的指针的地址(它在堆栈上,这就是地址以0xbfff开头的原因)。而不是实例指针本身。NSLog(@"%p", self);将显示与使用%@将self作为对象打印时显示的值相同的值。
https://stackoverflow.com/questions/12604362
复制相似问题