我以View Controller A作爲根視圖控制器製作了UINavigationViewController,然後推送視圖控制器B. 當我在模擬器中模擬內存警告時,僅調用了A的didReceiveMemoryWarning。當然,我已經在A和B中都推翻了didReceiveMemoryWarning。 最終,我通過在A的didReceiveMemoryWarning中調用了B的didReceiveMemoryWarning解決了這個問題。但是我不知道爲什麼B的方法是自動調用的。 A的viewDidUnload和B的viewDidUnload都稱爲預期的,因爲我觸發警告,同時從B.didReceiveMemoryWarning在UINavigationController的視圖控制器堆棧中的某些視圖控制器中不會調用
呈現模態視圖控制器如果視圖控制器B是導航控制器的根,它的didReceiveMemoryWarning被稱爲沒有問題。
同意。如果做'pushViewController',你不應該有這個問題。但是有太多的開發者在做'addSubview' ... – Rob
謝謝你的建議。但是他們都不能解決我的問題。 :(我已經刪除了所有「removeObserver:self」調用,並且已經使用pushViewController從A呈現視圖控制器B. – minorblend
你說B的viewDidUnload被正確調用了,該調用的堆棧跟蹤是否包含內存警告通知?它通常是這樣的,也許這會讓你知道你的視圖控制器是否實際上正在接收這個通知(你能否在'didReceiveMemoryWarning'中有錯字?) –