如果您在實現UIViewController的視圖事件(viewWillAppear,viewDidAppear等)時未調用super
,會發生什麼情況?在UIViewController中重寫視圖事件時忽略[super]調用。影響?
看來我以前已經忘記這麼做了,而且我還不清楚是否有任何不利影響。
如果您在實現UIViewController的視圖事件(viewWillAppear,viewDidAppear等)時未調用super
,會發生什麼情況?在UIViewController中重寫視圖事件時忽略[super]調用。影響?
看來我以前已經忘記這麼做了,而且我還不清楚是否有任何不利影響。
如果你繼承你自己的視圖控制器類之一,你肯定會想調用super
任何這些類型的方法或你自己的基類的方法將不會被調用。
還有一個問題,就是您的頂級視圖控制器類是否需要調用super
來運行基類UIViewController
類中的代碼本身。在UIViewController reference,似乎叫super
的要求是記錄了某些方法,其中viewWillAppear:
,viewDidAppear
,viewWillDisappear:
,並且viewDidDisappear
:
如果重寫此方法,必須在某個時刻調用
super
您實現。
但是,沒有跡象表明如果你不這樣做會發生什麼。
很明顯,在基本的iOS框架視圖控制器類中有這些方法實現的東西。或者至少,Apple保留在這些方法中實施某些東西的選項。你可以說他們是虛擬而不是抽象方法。
如果你已經從任何地方繼承了你的UIViewController委託(並且在創建自定義視圖控制器的過程中總是至少繼承一次UIViewController的子類),那麼派生自你的子類中的任何委託方法都不會被調用。
對不起,你能澄清?讓我們通過一個例子來幫助我理解。這是我認爲你的意思,這是對的嗎?我創建了一個新的viewController來控制應用程序的主屏幕 - viewControllerA。在這裏,我重寫viewWillAppear委託方法,但不要調用[super]。然後我繼承viewControllerA來創建viewControllerB。 viewControllerB不會收到viewWillAppear委託調用。 – drc 2013-04-28 22:09:38
實際上,我發現這已經在StackOverflow上得到了解答; [這個問題]的答案(http://stackoverflow.com/q/5632511/795339)提供了一些額外的細節和建議。 – 2013-04-28 22:17:17
很好的答案。謝謝!我仍然對這些基本的iOS方法中實際執行的內容感到好奇,但是這幫助我們澄清了實際上正在討論的事情。 – drc 2013-04-28 22:17:29