2012-03-05 65 views
0

我有一個iPhone應用程序,有4個選項菜單,並允許用戶快速切換視圖控制器。所以我想讓體驗更順暢,每當用戶在視圖控制器之間切換時,視圖控制器立即釋放,並分配to。用戶很可能會進行大量的切換。有沒有更好的方式來處理內存比保持釋放和重複分配相同的視圖控制器?在Objective C中連續釋放和分配是否昂貴?

+0

很快意味着推?因爲導航堆棧上的第一個視圖在被推送時不會被釋放 – CodaFi 2012-03-05 15:46:09

+0

否它不使用導航控制器。只是一個自定義的CommonViewController,它可以在4個視圖控制器之間切換,並且每次釋放'from'並分配'to' .. – Snowman 2012-03-05 15:47:38

+0

如果您擔心內存,爲什麼不使用導航控制器然後隱藏它?即使呈現模態視圖也會更有效率。 – CodaFi 2012-03-05 15:48:32

回答

2

視圖控制器並不昂貴。可以分配和釋放它們。然而,這些觀點可能很昂貴。當內存不足時,系統會嘗試卸載當前不可見的視圖控制器的視圖。你的應用應該始終注意到這一點。在viewDidUnload中釋放昂貴的對象,即IBOutlets和可以重新創建的數據。

如果遇到性能問題,應該將所有4個視圖控制器放在內存中。所以視圖會更快加載。 iOS負責卸載不可見的視圖(適當時)。

1

如果它的用戶做切換,時間在dealloc中和/或頁頭花完全是微不足道的,禁止任何非常耗時操作,如裝載數十/數百幅圖像等

總之,無論一個按需和緩存的解決方案將比另一個有一些微小的優勢。儘管你的用戶不會注意到這些差異。

1

這聽起來像你可能用標籤欄應用程序更好?

如果內存是您最關心的問題,那麼聽起來您會加載和卸載很多,這對於最終用戶來說會是一種較慢的體驗。

如果您使用標籤欄控制器,那麼如果需要內存,未使用標籤中的視圖將被自動卸載。並在必要時再次加載。