2013-01-10 59 views
1

當用戶通過菜單在視圖控制器之間切換時,如果他有足夠的內存,我想緩存它們。爲了做到這一點,我想用NSCache來存儲很多UIViewControllersNSCache - 不可移動的標記對象

但是,我不知道如何告訴NSCache當前使用的對象,不應該被刪除。 例如,當我運行應用程序時,加載幾個視圖控制器並退出應用程序,NSCache自動刪除所有viewControllers(這是有道理的 - 應用程序將能夠保持更長的前景)。但是,它也會刪除當前顯示的視圖控制器,這不是我想要的。

如何將特定對象標記爲不可移除?

回答

0

緩存是一個關聯內存:你不能強烈決定何時刪除緩存的項目。相反,您可以更改緩存策略。

從文檔:

默認情況下,在高速緩存NSDiscardableContent對象會自動從緩存中,如果他們的內容被丟棄移除,雖然這種自動刪除策略是可以改變的。如果一個NSDiscardableContent對象被放入緩存中,緩存在移除時會調用discardContentIfPossible。

2

你可以這樣做:當應用程序被切換到後臺

緩存會被刪除。 因此,當應用程序執行後臺操作時,將數據從緩存存儲到{NSUserDefaults},並且應用程序didBecomeActive將值重新分配給緩存。