2010-01-31 37 views
2

使用基於導航的視圖層次結構。我有一個根視圖控制器和多個視圖控制器,當按下按鈕時,它們從相同的分支出來。當用戶按下UINavigationBar上的後退按鈕時,當前viewcontroller被彈出並且顯示動畫返回到rootviewcontroller。如何卸載彈出的視圖控制器?

問題是,我希望viewcontrollers卸載,只要它們被彈出。看起來他們沒有卸貨,因爲當我回到他們身上時,他們仍然處於他們被炸的狀態。

如何導航回到rootviewcontroller後卸載視圖控制器?

回答

1

-viewUnload在應用程序收到低內存通知後調用。

這是-didReceiveMemoryWarning的默認實現,它調用-viewUnload

您可能想要做的就是根據您所描述的內容將您想要做的事情放入-viewDidDisappear

+0

好吧,所以在-viewDidDissapear我應該把[自我dealloc]的東西?或者,在rootviewcontroller中,如果(self.viewControllerOne!= nil){self.viewControllerOne = nil;}? – RexOnRoids 2010-01-31 07:35:42

+0

您不應該手動調用dealloc。 -dealloc由運行時處理。在-viewDidDisappear中發佈您需要發佈的任何內容。 – Giao 2010-01-31 07:39:52

+0

我說過的'無'建議呢? – RexOnRoids 2010-01-31 07:42:08

-3

in -viewDidDisappear why [self release];只需要確保你有一個懶惰的加載器,所以它會在需要的時候加載回來。

+0

請使用搜索功能查找相似的問題。 20分鐘前我看到了完全相同的問題。 – SnareChops 2012-12-27 08:08:31

0

當您從navigationcontroller彈出視圖控制器時,應該沒有更多的視圖控制器引用,並且當時應該取消分配視圖控制器。這應該會給你預期的結果。您可以通過在-dealloc方法中添加斷點來測試是否正在釋放視圖控制器。

如果dealloc沒有被調用,請檢查是否有保留週期。具體檢查一個子對象是否保留了viewcontroller。

相關問題