2012-08-17 29 views
0

我有最後的階段,即用戶「拯救」他在階段已經進入了所有數據之前,那裏有對彼此頂部幾個視圖控制器的應用程序。在進入數據階段,允許用戶返回並更改一些數據。但是我想發佈一些數據結構,因爲它們消耗了大量的內存。因爲當設備處於低內存,它只被稱爲我不能在viewdidunload釋放。我也不能在viewDidDisappear釋放它,因爲如果用戶想回去換東西的數據不會在那裏。的iOS:卸載和彈出視圖控制器

我認爲這樣做的方法是將viewcontrollers的指針設置爲先前的視圖控制器,然後在指向前一視圖控制器的指針上調用釋放函數以釋放內容。

我如何做到這一點?

我覺得我把類似

#import "SomeViewController.h" 

@property SomeViewController someViewController; 

.h文件?我不確定該從哪裏出發。

+0

您使用哪種視圖層次結構?導航控制器? – Alexander 2012-08-17 15:14:43

回答

2

如果使用太多的內存,系統會處理,對於你,以更有效的方式,任何DIY系統。這就是爲什麼記憶警告,ARC,游泳池和所有其他好東西首先出現在那裏的原因。所以我會建議你不想做什麼,並且相應地處理記憶力的問題。 順便說一下,請注意,在您的viewControllers中存儲數據不是一個好習慣,您應該將數據結構保存在單獨的對象中(如MVC所示)。例如,您可以將數據保存在單個對象中,以便您可以從每個視圖控制器訪問,這樣您就可以釋放不再需要的內存,而不會保留指向所有VC鏈的指針。

0

這取決於你試圖保存什麼樣的數據。我會去iOS中的數據存儲層次結構。看看NSUserDefaults的會幫助你(其中,從你的問題的性質,我不認爲會幫助)。然後嘗試SQLite。然後去核心數據。根據數據的性質,也許你也可以嘗試將數據存儲在文件中。如果你可以在一個單獨的類中有靜態方法來處理在你瀏覽關卡時保存所有這些中間數據,那就太棒了。保存最終數據後,刪除所有臨時存儲並完成。

哦,使用這種技術的另一個優點是「從以前停止的地方開始」,以防用戶因某種原因決定終止應用程序並重新啓動應用程序,或者應用程序意外崩潰。在這種情況下,請檢查導航已完成的級別,然後從此處繼續。

相關問題