0

我很開始開發,我正在製作一個包含大約150個ViewController的應用程序!每個人都有一個UIImageView。應用程序在崩潰之前佔用太多內存! (iPhone)

我一直在做一些測試,並且在iPhone本身使用該應用程序一段時間後,它會在我繼續查看ViewControllers時崩潰。

我一直在分析儀器中的這一點,並且我沒有泄漏,但是我的內存分配剛剛起來,當我一直在我的iPhone上查看ViewControllers時,使用情況一直持續下去,直到崩潰。

我認爲很明顯它會崩潰,因爲應用程序只是佔用太多的內存。

所以可以在任何一個解釋如何釋放viewControllers以釋放內存這樣就不會有崩盤提前

謝謝!

回答

0

你需要問自己的第一個問題是爲什麼你需要150個ViewController。 你想呈現150個不同的圖像? 如果是這樣,那麼多個ViewControllers不是要走的路。你可能需要使用一個UIScrollView,它將包含你的圖像(當然不是所有的圖像,使用延遲加載)。

您的情況可能發生的情況是,您每次需要顯示新的ViewController時調用「pushViewController」,但這不會釋放先前的ViewController。它只是堆疊所有以前的ViewController並保留它們的指針。

你會發現,導航控制器的工作方式是它們有一個視圖控制器數組。每次你展示一個新的視圖控制器時,它都會被添加到數組的末尾。當你點擊「Back」或調用「popViewController」時,數組的最後一項被刪除(然後從內存中自動釋放)。

請參閱thisthis問題以瞭解如何創建UIScrollView來滾動圖像。

+0

非常感謝您的回答..我之前就知道我不應該使用多個viewControllers ..首先我會嘗試調用「pushViewController」它會有用嗎?那麼我將重新設計我的應用程序,我將使用UIScrollView ..再次感謝你! :) –

+0

@AbdElrhmanRizk不,你不應該使用「pushViewController」,因爲它會保持一個指向你以前的ViewControllers的指針。您應該使用UIScrollView,或者直接將您當前呈現的圖像替換爲要顯示的下一張圖像。即'myImageView.image = [UIImage imageNamed:@「NewPicName.png」]' –

+0

嗯,我將使用UIScrollView ..謝謝你的時間:) ..好運;) –