如果你在UIViewController的视图事件(viewWillAppear,viewDidAppear等)的实现中没有调用super
会发生什么?
我之前似乎忘了这样做,而且我不清楚是否存在任何不利影响。
答案 0 :(得分:1)
如果你已经从任何地方继承了你的UIViewController委托(并且你总是在制作自定义视图控制器时至少将UIViewController子类化一次),那么你派生的子类中的任何委托方法都不会被调用。
答案 1 :(得分:1)
如果您将自己的一个视图控制器类子类化,那么您肯定希望为这些类型的方法调用super
,否则将不会调用您自己的基类的方法。
还有一个问题是,您的顶级视图控制器类是否需要调用super
来运行基本UIViewController
类本身的代码。在UIViewController reference中,似乎记录了某些方法调用super
的要求,其中包括viewWillAppear:
,viewDidAppear
,viewWillDisappear:
和{{1 }}:
如果您覆盖此方法,则必须在实施中的某个时刻调用
viewDidDisappear
。
但是,没有迹象表明如果你不这样做将会发生什么。
显然,在基础iOS框架视图控制器类中,这些方法中实现了一些东西。或者至少,Apple保留了在这些方法中实现某些功能的选项。您可以说它们是虚拟而不是抽象方法。