我有這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永遠不會被處理,那麼一切運行良好。但是,我不知道這是否是正確的做事方式。
在這種情況下,在子類中調用超級函數的方法是什麼?