0

我试图理解为什么:

NSLog(@"self = %p", self);

在 awakeFromNib 中打印的值与 viewDidLoad 中的相同 NSLog 不同?

这不是一个大问题,因为我不需要 awakeFromNib,但我想了解它是如何工作的。

创建控制器的代码如下:

    MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    myViewController.image = tmpImage;
    [self.navigationController pushViewController:myViewController animated:YES];
    [myViewController release];

感谢您的任何建议!

4

1 回答 1

0

因为当 NSLog 记录一个对象时,它实际上是- description向该对象发送消息。您正在打印的地址实际上是返回的 NSString 对象的地址,其中包含实例的文本描述。由于每次发送消息时都会返回一个新字符串,因此您会得到一个不同的地址。

如果你想要你需要使用的对象的地址:

NSLog(@"self = %p", &self);
于 2010-05-01T18:31:36.007 回答