我有一個標籤欄的應用程序。每個選項卡都包含導航控制器,允許用戶從一個視圖切換到另一個視圖,以顯示數據的深入信息(每個視圖由視圖控制器處理,每個視圖控制器類具有didReceiveMemoryWarning
方法)。通過從Web服務提取數據來填充列表。
問題:
當我使用「硬件>模擬內存警告」 iPhone模擬器的選項,該didReceiveMemoryWarning
方法被稱爲我的所有視圖控制器 - 即使該用戶正在觀看一個。我不想清除活動視圖控制器正在使用的任何內容。我怎樣才能做到這一點?
哪些方法應該有實現來重新加載數據後,數據被釋放,因爲內存警告? (我看到了含有表視圖調用viewDidLoad
方法,當用戶回來這種看法,但如果視圖包含(說UIWebView的),那麼viewDidLoad
方法不叫視圖控制器類。這是爲什麼?)
編輯(星期五2009年1月30日 - 下午3點10分)
(注:我使用界面生成器創建視圖和loadView
方法被註釋掉)
所以,當一個視圖控制器接收到內存警告消息,這些是執行的步驟:
調用下面的方法:
- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; }
呼叫到
[super didReceiveMemoryWarning]
的結果,[self setView:nil]
就會自動叫什麼名字?如果應該清除任何資源,則應該覆蓋
setView
方法以清除本地資源。如果視圖當前處於活動狀態(默認),則不調用[self setView:nil]
。對? - 我很好奇哪種方法需要這個決定,以及如何?
您能否確認一下。另外,我收到了一個錯誤,下面是這個方法,但是在中加入myObject = nil
後發現dealloc
控制器類的方法修復了這個問題。謝謝。
即使我不重寫didReceiveMemoryWarning方法,我的觀點被清除。這是爲什麼? – Mustafa 2009-01-30 05:04:01