我有这3类:不调用[超级viewDidLoad中]和子类[超级的dealloc]
@interface BaseViewController : UIViewController
@interface BaseWebViewController : BaseViewController
@interface SecondaryWebViewController : BaseViewController
在AppDelegate中,我设置RootViewController的是BaseWebViewController将永远不会被整个取消alloced应用程序的整个生命周期。在BaseWebViewController中,我在各自的方法中调用[super viewDidLoad]和[super dealloc]。
在整个应用程序中,用户将通过在BaseWebViewController上找到的UIWebView进行导航。但是在某些链接上,我需要推送(以后再弹出)SecondaryWebViewController。
我的问题是,既然BaseWebViewController和SecondaryWebViewController是继承BaseViewController的,我不确定在SecondaryWebViewController中调用[super viewDidLoad]和[super dealloc]怎么办。
在SecondaryWebViewController中,我一直在调用[super viewDidLoad]和[super dealloc],但我注意到它在调用[super dealloc]时会引发一些问题,特别是随机崩溃。由于BaseWebViewController必须始终在应用程序的整个生命周期中存在,因此我不希望在BaseViewController上调用dealloc。
对不起,如果这听起来有点混乱,但本质上,流程是这样的:
- 的AppDelegate设置RootViewController的到BaseWebViewController
- BaseWebViewController的viewDidLoad还调用父BaseViewController的 viewDidLoad中
- 多数寿命的应用程序花费在 BaseWebViewController,但偶尔SecondaryWebViewController 需要推
- SecondaryWebViewController的viewDidLoad和dealloc调用超类的viewDidLoad和dealloc导致奇怪的行为。
目前,如果我在SecondaryWebViewController中注释掉[super viewDidLoad]和[super dealloc],以便BaseViewController永远不会被处理,那么一切运行良好。但是,我不知道这是否是正确的做事方式。
在这种情况下,在子类中调用超级函数的方法是什么?