loadview方法被多次调用

Sai*_*Sai 1 ios

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

- (void)loadView
{
    NSLog(@"loadView is called");
}
Run Code Online (Sandbox Code Playgroud)

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

我想知道为什么loadView方法要调用这么多次。

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

jrt*_*ton 5

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

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

从文档中:

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