回答

1

如果你繼承你自己的視圖控制器類之一,你肯定會想調用super任何這些類型的方法或你自己的基類的方法將不會被調用。

還有一個問題,就是您的頂級視圖控制器類是否需要調用super來運行基類UIViewController類中的代碼本身。在UIViewController reference,似乎叫super的要求是記錄了某些方法,其中viewWillAppear:viewDidAppearviewWillDisappear:,並且viewDidDisappear

如果重寫此方法,必須在某個時刻調用super您實現。

但是,沒有跡象表明如果你不這樣做會發生什麼。

很明顯,在基本的iOS框架視圖控制器類中有這些方法實現的東西。或者至少,Apple保留在這些方法中實施某些東西的選項。你可以說他們是虛擬而不是抽象方法。

+0

實際上,我發現這已經在StackOverflow上得到了解答; [這個問題]的答案(http://stackoverflow.com/q/5632511/795339)提供了一些額外的細節和建議。 – 2013-04-28 22:17:17

+0

很好的答案。謝謝!我仍然對這些基本的iOS方法中實際執行的內容感到好奇,但是這幫助我們澄清了實際上正在討論的事情。 – drc 2013-04-28 22:17:29

1

如果你已經從任何地方繼承了你的UIViewController委託(並且在創建自定義視圖控制器的過程中總是至少繼承一次UIViewController的子類),那麼派生自你的子類中的任何委託方法都不會被調用。

+0

對不起,你能澄清?讓我們通過一個例子來幫助我理解。這是我認爲你的意思,這是對的嗎?我創建了一個新的viewController來控制應用程序的主屏幕 - viewControllerA。在這裏,我重寫viewWillAppear委託方法,但不要調用[super]。然後我繼承viewControllerA來創建viewControllerB。 viewControllerB不會收到viewWillAppear委託調用。 – drc 2013-04-28 22:09:38