2017-04-07 62 views
0

我正在製作一個應用程序,它包含許多高分辨率圖像,這些圖像根據選擇哪個選項卡在各種集合視圖中初始顯示,類似於Instagram。即使所有圖像都帶有應用程序,但我發現在一個簡單的NSMutableDictionary中異步緩存UIImages,與每次重新加載它們相反,都會加快集合視圖UI的速度。現在我有一個圖像緩存可以處理應用中的所有圖像,即使它們分佈在多個視圖控制器/集合視圖中,並且具有各種大小。如果這些視圖控制器中的任何一個出現內存警告,則清除緩存。單個vs多個UIImage緩存

我的問題是:這是一個理想的設置,還是更有意義爲每個視圖控制器有一個單獨的圖像緩存,只處理其各自的集合視圖內的圖像?我的想法是這樣,如果視圖控制器#3獲取內存警告,只有其圖像緩存將被清除,允許視圖控制器#1和#2保留其流暢的用戶界面。

回答

0

也有一些是當你希望緩存更好的東西,合適的對象爲NSCache,它可以作爲一個字典,但它有很多優點:

的NSCache類整合各種自動驅逐政策,其中 確保緩存不會使用太多的系統內存。如果其他應用程序需要內存 ,則這些策略會從緩存中刪除一些 項目,從而最大限度地減少其內存佔用量。
您可以添加, 刪除,並從不同的線程查詢緩存中的項目,而不需要 必須自己鎖定緩存。
與NSMutable Dictionary 對象不同,緩存不會複製放入其中的關鍵對象。

關於您的問題我認爲沒有具體的答案。如果您正確管理緩存,則只能使用一個,但我會爲每個我使用的收集視圖創建一個,以避免共享信息。