loadview方法被多次调用

时间:2013-12-17 10:24:20

标签: ios

我以编程方式创建视图。如果我没有放loadView方法,该应用运行良好。但是,当我像这样添加loadView方法时:

- (void)loadView
{
    NSLog(@"loadView is called");
}

我发现这种方法被多次调用!最后,应用程序崩溃了。

我想知道为什么loadView方法被调用这么多时间。

有人可以帮忙吗? 非常感谢!

2 个答案:

答案 0 :(得分:4)

预计

loadView会填充视图控制器的view属性。视图属性是延迟加载的(查看调用堆栈,您将看到一个名为_loadViewIfNeeded的方法)。

如果loadView没有创建视图,那么每次访问.view属性时,视图控制器都会再次调用loadView,尝试延迟加载视图。在某些时候,一切都会出错,因为视图控制器需要一个视图。如果您从自定义loadView中的 中访问self.view,您将获得无限循环。

来自文档:

  

您可以覆盖此方法以手动创建视图。如果您选择这样做,将视图层次结构的根视图分配给视图属性。您创建的视图应该是唯一的实例,不应与任何其他视图控制器对象共享。您对此方法的自定义实现不应调用super。

答案 1 :(得分:0)

在您的加载视图中,您调用[self loadView]而不是[super loadView]