我正在開發一個應用程序,它有近12個視圖控制器。應用程序具有帶4個選項卡的tabBar意味着四個視圖控制器,並且有多個視圖可在每個選項卡欄中導航。請注意每個選項卡都有一個帶有rootviewController作爲其第一個視圖的navigationController。應用程序是廣泛的數據庫應用當我在模擬器上運行時,它運行的很好,但是在設備上運行時得到了didRecieve內存警告。關於同樣的問題,我也有幾個問題。在iPhone上需要幫助didRecieveMemoryWarning
注意:我已使用儀器工具檢查了泄漏應用程序,並且沒有紅色金字塔,這意味着代碼中沒有泄漏。
當處理多個視圖控制器時,最佳做法是什麼?
當我收到內存警告時,我調用[self deleteObjects],它會刪除所有正在修改當前控制器值的實例。但如果這是正確的方法,我不確定。當我們收到記憶警告時應該做些什麼。有沒有什麼好的教程。 (鏈接plz)
此外如何確保[self deleteObjcts]沒有爲可見控制器調用。 (我之前調用了viewDidUnload方法中的deleteObjects方法,但是由於我們做了[super didRecieveMemoryWarning],因爲viewDidLoad在層次結構中從上到下被調用,所以一旦我刪除了頂層viewController的對象,顯然其餘部分。控制器)
一些對我來說基本棘手的問題如下:
爲什麼內存警告並不一致。就像我在開始的時候有時會得到它們,而有時候沒有警告。當我們使用[NSDate date],[UIImage imageNamed:@「...」],[NSString stringWithFormat]等,我們不擁有這些對象,我們不必釋放它們,但我們如何確保這些對象當我們收到一條內存警告時,對象會被關閉。
我在多個地方使用NSMutableArray。在這個數組中,我存儲了[NSString StringWithFormat],[UIImage imageNamed ...]對象,所以當我釋放數組時,我需要放棄數組中的對象,但我不擁有它們。
雖然這是問題的一個大名單,但我感謝您的幫助和時間,因爲我在我的開發最後階段,我面對這些重大挑戰。
只是因爲儀器沒有看到內存泄漏並不意味着它們不存在。您可能想要讓您的代碼通過Clang Static Analyzer來查看它是否找到任何東西。 – 2009-09-28 00:28:04