2011-06-01 88 views
1

當我在模擬器上運行我的應用程序,然後我去硬件 - >模擬內存警告它導致我的視​​圖變空白(我只看到白色)。有誰知道我可以如何讓它不這樣做? - 我不想要一個實際的內存警告讓我的屏幕變爲空白。iPhone:爲什麼模擬內存警告後屏幕變空白?

謝謝

+0

你是否正在發佈視圖控制器'didrecievememorywarning'中的當前視圖? – thelaws 2011-06-01 01:49:30

+0

不,didreceivememorywarning未觸及。所以它只是有一個[超級didreceivememorywarning]在那裏...雖然我認爲我讀的地方,一個memorywarning使當前視圖零或什麼? – foreyez 2011-06-01 01:55:05

+0

你有什麼viewUnload? – tegbains 2011-06-01 02:37:52

回答

0

我遇到同樣的問題。我有一個應用程序,您將看到一個登錄屏幕,它將一個主菜單下的NavController按下。主菜單中的每個選擇然後推動一個新的視圖控制器。如果在菜單項下出現內存警告,則返回到菜單顯示空白視圖。

這可能比解決問題更掩蓋症狀,但通過覆蓋主菜單的didReceiveMemoryWarning消息(使超級版本未被調用)阻止視圖消失。

我喜歡這樣比覆蓋setView(因爲建議here)更好,因爲你沒有得到有關「-viewDidUnload導致視圖重新加載」的討厭性能警告。

-1

呸,這是主要是因爲我把我的導航控制器錯誤

+2

你設置不正確?我有類似的問題,我的朋友 – 2011-07-28 23:30:10

+1

是的,我們遇到同樣的問題,它已經讓所有人難住了。 – Oscar 2012-03-06 19:09:06

+0

不要只是說你解決了它,並沒有與社區分享 – NSProgrammer 2013-06-20 17:21:50

0

我得到了同樣的問題,現在和我解決了這個問題。

在我來說,我得到了mainViewController的代碼,這裏面的臺詞:

- (void)loadView { 
    [super loadView]; 
} 

模擬內存警告系統調用didReceiveMemoryWarning後,你可以檢查viewDidUnload被調用後立即,如果你使用的loadView你的代碼中該班級稱之爲重新加載替換舊視圖的全新頁面。 這會導致一個空白屏幕。

所以要解決我只是評論上述三種線的問題。

+0

我深深地重新思考了這個問題。基本上這個問題可以用一個問題來解釋:我們在哪裏存儲繪製視圖的模型?如果答案是無處...結果是空白頁面。當系統引發內存警告通知時,所有viewControllers都會運行didReceiveMemoryWarning。之後它的方法viewDidUnload開始清理我們的對象,如果實施。在所有的控制器重新開始調用viewDidLoad之後,視圖變黑。如果我們存儲了配置,即模型中的圖像,viewDidLoad會重新加載視圖,否則我們會陷入空白屏幕。 – Gabriele 2011-10-24 22:01:28