我不明白我應該在viewDidUnload
與viewDidDisappear
之間執行某些操作。兩者有什麼區別?viewDidUnload與viewDidDisappear
例如,我想發送一個NSNotificaton
當視圖控制器從視圖層次結構中刪除。在這兩種方法之間,我發佈通知的位置是否重要?
我不明白我應該在viewDidUnload
與viewDidDisappear
之間執行某些操作。兩者有什麼區別?viewDidUnload與viewDidDisappear
例如,我想發送一個NSNotificaton
當視圖控制器從視圖層次結構中刪除。在這兩種方法之間,我發佈通知的位置是否重要?
這是參照蘋果的文檔: -
viewDidUnload: -
當低內存條件發生並且不需要當前視圖控制器的視圖,該系統可以選擇,以除去從這些觀點記憶。這個方法在視圖控制器的視圖被釋放後調用,並且是您執行任何最終清理的機會。如果您的視圖控制器存儲對視圖或其子視圖的單獨引用,則應該使用此方法來釋放這些引用。您也可以使用此方法刪除對您創建的任何對象的引用,以支持該視圖,但現在視圖不再需要時不再需要該對象。
viewDidDisappear: -
通知其視圖是從即每次視圖自敗或移動到其他視圖的視圖層次結構中移除視圖控制器。
viewDidDisappear
被稱爲每當認爲是時候消失,或者你去其他視圖,當控制器的觀點是從內存中釋放viewDidUnload
被調用。 (在iOS 6.0中不推薦視圖不再在低內存條件下清除視圖,因此從未調用此方法。)see the reference。
謝謝,現在我意識到,viewDidUnload在viewController本身最終被銷燬時被調用,但是當您轉換到不同的視圖時,可能會調用viewDidDisappear,也許會在視圖層次結構的更下方。所以舉例來說,如果我們有視圖控制器A - > B - > C,並且我想知道B何時被銷燬並且控制權返回給A,那麼我應該使用viewDidUnload。即使當B進入C時,也是B/C,viewDidDisappear也會觸發。 – kevlar
這是不正確的。 'viewDidUnload'是** only **,當由於內存不足而釋放視圖時調用。如果由於其他原因而被釋放,您將不會收到'viewDidUnload'事件。 –
這是爲什麼被拒絕?這個問題太模糊了嗎? – kevlar
是文檔不夠徹底解釋這兩種方法之間的區別? –