我以编程方式创建视图。如果我没有放loadView
方法,该应用运行良好。但是,当我像这样添加loadView
方法时:
- (void)loadView
{
NSLog(@"loadView is called");
}
我发现这种方法被多次调用!最后,应用程序崩溃了。
我想知道为什么loadView
方法被调用这么多时间。
有人可以帮忙吗? 非常感谢!
答案 0 :(得分:4)
loadView
会填充视图控制器的view
属性。视图属性是延迟加载的(查看调用堆栈,您将看到一个名为_loadViewIfNeeded
的方法)。
如果loadView
没有创建视图,那么每次访问.view
属性时,视图控制器都会再次调用loadView
,尝试延迟加载视图。在某些时候,一切都会出错,因为视图控制器需要一个视图。如果您从自定义loadView中的 中访问self.view,您将获得无限循环。
来自文档:
您可以覆盖此方法以手动创建视图。如果您选择这样做,将视图层次结构的根视图分配给视图属性。您创建的视图应该是唯一的实例,不应与任何其他视图控制器对象共享。您对此方法的自定义实现不应调用super。
答案 1 :(得分:0)
在您的加载视图中,您调用[self loadView]
而不是[super loadView]