2011-02-01 141 views
1

我看到一些意外的行爲,當我觸發模擬內存警告,我希望有人能解釋。iOS模擬內存警告問題

我的應用程序包含一個UITabBarController和一個UINavigationController。我的所有UI都是以編程方式創建的,沒有任何內容從NIB加載。在我的委託函數applicationDidFinishLaunching中,我創建了選項卡控制器,導航控制器和五個視圖控制器。當我觸發內存警告時,主視圖變爲完全白色,導航欄位於頂部,標籤位於底部。當我更改選項卡時,新選項卡正確調用loadView時正確地重新加載它的數據,但導航控制器消失。

這使我困惑的原因有兩個。 1)爲什麼主視圖被卸載?我不認爲viewDidUnload會在主動視圖控制器上被調用。 2)爲什麼我的導航控制器消失了,但只有在更改標籤後。這真是一個謎。

謝謝。

回答

1

問題歸結到我是如何使用UIViewControllers,UIViews和UINavigationController的我5個視圖控制器,每個視圖之間動態交換〜3個視圖,這有點奇怪,它是我的第一個iOS項目,並不理解「Apple Way」的產品。一個來自我的應用程序的UINavigationController,並寫了我自己的。我不使用從一個視圖到下一個視圖的動畫,所以這是非常簡單和容易做到的。

經驗教訓。

1

這聽起來像是一個記憶問題。您可能需要retain您爲UITabBarController和UINavigationController創建的對象。 在卸載方法中,您需要釋放這些內容。

有蘋果解釋Objective C中的內存管理的優秀手冊:。"Memory Management Programming Guide」很清楚,樂於助人

+1

如果您發佈了一些代碼,它可能會有所幫助。你如何創建你的控制器,如何聲明屬性? – Axel 2011-02-01 09:41:13