【问题标题】:awakeFromNib and loadView execute for different instancesawakeFromNib 和 loadView 为不同的实例执行
【发布时间】:2011-02-14 14:38:34
【问题描述】:

我试图了解原因:

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];

感谢您的建议!

【问题讨论】:

    标签: iphone uiviewcontroller instantiation nib


    【解决方案1】:

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

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

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

    【讨论】:

    • 我也得到不同的值。此外,调试器为我的地址提供了不同的值(悬停在“self”上)
    • 不确定是什么导致了您的问题,但您在哪里使用了错误的 NSLog 语句形式。
    猜你喜欢
    • 2011-12-27
    • 2017-01-10
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多