繁体   English   中英

为什么需要[super loadView]或[super viewDidLoad]?

[英]Why is [super loadView] or [super viewDidLoad] required?

写入[super loadView]或[super viewDidLoad]时会发生什么? 我试图删除代码,但堆栈溢出并进入无限循环。 有人可以解释为什么需要这个?

首先,当你重写loadView ,手动创建你自己的看法,你应该调用父类的实现。 这是因为您将手动创建一个视图,并使用它们而不是 UIViewController实现创建的视图。 (请参阅loadview 文档 。)

但是当你覆盖viewDidLoad ,你应该确实调用超类的实现。 这是因为UIViewControllerviewDidLoad实现会进行一些内部簿记,因此除了超类之外,还要运行自定义viewDidLoad代码。

它从你的超类中调用该方法。 让我们说它的NSObject。 这些方法的名称解释:loadView是加载视图的NSObject方法,viewDidLoad是处理视图加载的NSObject方法...沿着那些行视图控制器“viewDidLoad”中的方法本身,也许是“loadView”没有代码可以执行上述操作...它只是用于自定义,因为您无法修改原始的.m方法...

要找到你的超类,请转到.h文件:

   @interface MyViewController : MySuperClass //thats it!

在开始将UI放在其上之前,底层类需要做一些自己的簿记才能做好准备。 在Android中,相应的应用程序实际上会故意通过抛出你没有调用超级优先的异常来崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM