Xcode 4 - viewDidLoad问题

时间:2011-03-11 21:16:03

标签: iphone xcode ios ipad

是否有其他人在Xcode 4中遇到问题,其中viewDidLoad被调用了两次?我在Xcode 3.2和Xcode 4中运行了相同的项目,它只在Xcode 4中运行。

4 个答案:

答案 0 :(得分:4)

Apple Developer forums上研究之后,似乎在某些情况下Xcode 4会创建错误的Interface Builder NIB。结果是应用程序的rootViewController被加载了两次,这真的搞砸了。在Xcode 3中加载的相同项目不会出现问题。

在我的通用应用程序中,它只影响了iPad NIB。 iPhone很好。

我能够通过以下方式解决这个问题:

  • 在Interface Builder中删除rootViewController连接(这会导致应用加载window.rootViewController = nil
  • 在主控制器的viewDidLoad(两次加载的控制器)中,我手动分配appDelegate.window.rootViewController = self

到目前为止,这似乎有了预期的效果。

答案 1 :(得分:0)

Xcode只是IDE - 它不应该与你的应用程序执行时发生的事情有任何关系。如果存在差异,您似乎更有可能为不同的iOS版本构建。

答案 2 :(得分:0)

您是否设置了视图控制器的视图?我有同样的问题,我意识到我没有设置视图属性。

- (void)viewDidLoad {
    UIView *contentView = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame];
    //add some stuff to contentView here
    self.view = contentView;
    [contentView release];
}

答案 3 :(得分:0)

我有同样的问题。我解决了它。当您的应用内存确实收到内存警告时,就会发生这种情况。

给memoryDidReceiveWarning设一个断点。它被调用,并清除你的类对象内存。所以你的viewDidLoad Get被调用两次,因为那时它没有内存。