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

时间:2012-05-01 10:56:28

标签: objective-c ios superclass

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

3 个答案:

答案 0 :(得分:4)

首先,当您覆盖loadView时,要手动创建自己的视图,您应该 NOT 调用超类的实现。这是因为您将手动创建一个视图,并使用那些而不是UIViewController的实现创建的视图。 (请参阅loadview documentation。)

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

答案 1 :(得分:3)

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

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

   @interface MyViewController : MySuperClass //thats it!

答案 2 :(得分:2)

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