NSCache

NSCache

  • 專門用來做緩存處理的
  • objectForKey(和字典用法很像)

簡介

  • NSCache是蘋果官方提供的緩存類,具體使用和NSMutableDictionary類似,在AFN和SDWebImage框架中被使用來管理緩存
  • 蘋果官方解釋NSCache在系統內存很低的時候,會自動釋放對象,建議:接收到內存警告的時候主動調用removeAllObject方法釋放對象
  • NSCache是線程安全的,在多線程操作中,不需要對NSCache加鎖
  • NSCache只是對Key進行Strong引用,不是拷貝

重要屬性

  • name:名稱
  • delegate:設置代理
  • totalCostLimit:緩存空間的最大總成本,超出上限會自動回收對象,默認值為0,表示沒有限制,配合setObject:forKey:const:使用的
  • countLimit:能夠緩存的對象的最大數量,默認值為0,表示沒有限制
  • evictsObjectsWithDiscardedContent:標識緩存是否回收廢棄的內容

重要方法

  • setObject:forKey:在緩存中設置指定鍵名對應的值,0成本
  • setObject:forKey:const:
  • removeObjectForKey:刪除緩存中指定鍵名的對象
  • removeAllObjects:刪除緩存中所有的對象

NSCache基本使用

  • 創建一個NSCache屬性,懶加載
    • 設置緩存的總成本totalConstLimit,如果超過了總成本,那么該對象內部會開啟一個回收過程(先把之前的對象刪除,存儲后面的數據)
    • 設置緩存的總數量countLimit,數量和成本沒有關系了,如果同時設置totalConstLimit,那么以最小的為準。
    • 設置代理(開發中用不到,是用來做調試的,當內部開啟一個回收過程的時候調用)
  • 存數據
    • dataWithContentsOfFile:
    • [self.cache setObjec:forKey:] 成本為0
    • setObject:forKey:const:
      • const:單位成本,有相對意義,沒有絕對意義,是相對于總成本的
  • 取數據
    • [self.cache objectForKey:]
    • 判斷data是否有值

NSCache的應用

  • 多圖下載改善:用NSCache代替字典
    • 定義NSCache屬性NSCache *images
    • 懶加載 _images = [[NSCache alloc]init]
    • 其他地方就不需要改了
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容