2011-09-22 65 views
0

我有一個簡單的應用程序與tabbar導航界面。 它有三個視圖(A,B和C)和一個模態視圖。每個視圖都有自己的視圖控制器和筆尖。它們都是在界面構建器中設計和連接的。如何在tabbar控制器中看不到視圖?

我想釋放不可見的視圖。 另一種觀點認爲出現時試圖釋放和零它們如

[[[self.navigationController.viewControllers objectAtIndex:0] view] release];  
[[self.navigationController.viewControllers objectAtIndex:0] view] = nil; 

它不會引起任何問題,但是當我運行的儀器不作任何區別。我沒有看到在內存使用

任何下降我會感激你的幫助

回答

0

由於@Daryl Teo寫了你應該釋放並重新創建在viewWillDis/Appear和(這就是爲什麼我寫這個答案)你有一個方法didReceiveMemoryWarning,使用它!
只要被調用,您就可以簡單地註銷,並使用模擬器包含的內存警告測試功能對其進行測試。
只需打開一個選項卡,打開另一個選項卡並調用該測試功能。你的調試控制檯應該打印出日誌。如果不是,你應該仔細檢查你是否已經釋放所有對象,也許有人被過度保留(這也應該在viewWillDisappear發佈)。

0

內存使用量的下降可能不會顯著,這取決於釋放的viewController持有上。我將NSLog吸收到了viewController的'dealloc'中,以查看它是否真正得到處理,或者是否還有其他對象仍然堅持使用它。記住釋放不會釋放內存,它只會這樣做(通過調用dealloc)如果對象保留計數達到0.

0

你不想這樣做。讓TabBarController爲你處理你的視圖控制器。 (它將已經保留你的viewController在內部,因此無論你做什麼只會使保留計數不同步)

如果你在viewWillDisappear中釋放對象,你或許能夠使它更有效地利用內存。然後在viewWillAppear中再次重新生成數據。

+0

我做到了,但內存使用量沒有下降。當我選擇另一個視圖時它會上升,但當我釋放它們時不會下降。我做了[self.view release]和self.view = nil。它很好地重新創建了我的觀點,但僅此而已。 – Tibidabo

相關問題