2012-05-08 50 views
7

因此NSCache對象應該保持活動狀態以保留緩存的數據,這意味着用於存儲數據的同一對象必須用於檢索數據。Objective-c - 通過靜態NSMutableDictionary使用NSCache的好處?

  • 所以問題是在使用NSCache的單點NSDictionary中保存我的數據有什麼意義?
  • 什麼是使用NSCache的首選方式?靜態字段?繼承它並創建一個單身?

回答

19

一個緩存有一些怪癖,使得它很適合用作緩存,而不適合用作通用集合。如文檔指出:

NSCache對象從其他可變集合在幾個方面有所不同:

  • 的NSCache類整合各種自動刪除策略,這確保它不會使用太多的系統的內存。如果其他應用程序需要內存,系統會自動執行這些策略。調用時,這些策略會從緩存中刪除一些項目,從而最大限度地減少內存佔用量。
  • 您可以從不同線程添加,刪除和查詢緩存中的項目,而無需自行鎖定緩存。
  • 從NSCache對象中檢索某些內容會返回一個自動釋放的結果。
  • 與NSMutableDictionary對象不同,緩存不會複製放入其中的關鍵對象。

這些功能對於NSCache類是必需的,因爲緩存可能決定在後臺自動異步調整自身,如果它被調用來釋放內存。

+0

測試時務必小心。「AssertEqualObjects」斷言不會在兩個不同但空的NSCache實例上工作 –