2009-09-26 17 views
1

我正在開發一個應用程序,其運行時間內存達到6-7MB。當我運行該應用程序時,它可以正常工作,但有時它會在設備上斷開或顯示白色屏幕而不是實際視圖。當我做了一些測試後,我才知道它正在觸發didRecieveMemoryWarning事件。iPhone和iPod中可用的最大運行時間內存?

這是因爲圖像的原因,就像我使用大量動畫一樣,每次我調用圖像動畫函數來獲取圖像數組。因爲我使用imageWithName,所以我需要每次調用。此外,我不應該釋放用於圖像的內存,因爲我不擁有它。我認爲這不是正確的處理方式。有沒有什麼好辦法來解決這個問題。有沒有人有更好的主意,或者這不是問題。

請注意,代碼不會破壞模擬器上的代碼之間沒有中斷。

回答

1

內存的最大數量會有所不同,可能會顯着取決於許多因素。

您不應該真正地將內存集的大小作爲目標,而是儘可能地優化代碼中的每個字節,從最大的低效率開始並向後回退。您可以使用Instruments中的ObjectAlloc工具來深入瞭解負責最大數量分配的內容。它還可以告訴你導致每次分配的調用順序 - 堆棧。

我建議通過一些CoreAnimation示例來了解更多信息,除非有人用一個有用的,具體的例子來說明這裏。

0

如果您知道內存使用來自您可以丟棄的映像,那麼您可以使用[[UIImage alloc] initWithContentsOfFile:...]並緩存並放棄,只要您認爲合適。

但是,這聽起來像你不積極,這是問題。我強烈建議您熟悉Apple提供的一些分析工具,例如泄漏和對象分配。這可能會指向您可以丟棄的一些大對象分配。

相關問題