SDImageCache類說明


繼承于:NSObject


聲明處:SDImageCache.h


概述

SDImageCache維持一個內存緩存和一個可選的硬盤緩存。硬盤緩存寫操作是異步執行的,所以不會給UI添加不必要的延遲。

任務

  • config 屬性
  • maxMemoryCost 屬性
  • maxMemoryCountLimit 屬性
  • + sharedImageCache
  • – initWithNamespace:
  • – initWithNamespace:diskCacheDirectory:
  • – makeDiskCachePath:
  • – addReadOnlyCachePath:
  • – storeImage:forKey:completion:
  • – storeImage:forKey:toDisk:completion:
  • – storeImage:imageData:forKey:toDisk:completion:
  • – storeImageDataToDisk:forKey:
  • – diskImageExistsWithKey:completion:
  • – queryCacheOperationForKey:done:
  • – imageFromMemoryCacheForKey:
  • – imageFromDiskCacheForKey:
  • – imageFromCacheForKey:
  • – removeImageForKey:withCompletion:
  • – removeImageForKey:fromDisk:withCompletion:
  • – clearMemory
  • – clearDiskOnCompletion:
  • – deleteOldFilesWithCompletionBlock:
  • – getSize
  • – getDiskCount
  • – calculateSizeWithCompletionBlock:
  • – cachePathForKey:inPath:
  • – defaultCachePathForKey:

屬性

config

@property (nonatomic, nonnull, readonly) SDImageCacheConfig *config

討論

緩存配置對象 - 存儲所有類型的設置。

聲明處

SDImageCache.h

maxMemoryCost

@property (assign, nonatomic) NSUInteger maxMemoryCost

討論

內存中保存圖片緩存的最大開銷值。在內存中的開銷是像素的個數占有的。

聲明處

SDImageCache.h

maxMemoryCountLimit

@property (assign, nonatomic) NSUInteger maxMemoryCountLimit

討論

緩存能擁有的最大對象個數。

聲明處

SDImageCache.h

類方法

sharedImageCache

+ (nonnull instancetype)sharedImageCache

討論

返回全局共享的緩存實例。

返回值

SDImageCache全局實例。

聲明處

SDImageCache.h

實例方法

addReadOnlyCachePath:

- (void)addReadOnlyCachePath:(nonnull NSString *)path

討論

如果你的應用想綁定預加載圖片,通過SDImageCache方便的搜索圖片預存儲添加一個只讀緩存路徑。

參數

path

用于只讀緩存路徑的路徑。

聲明處

SDImageCache.h

cachePathForKey:inPath:

- (nullable NSString *)cachePathForKey:(nullable NSString *)key inPath:(nonnull NSString *)path

討論

根據一個指定的key獲取緩存路徑。(需要緩存路徑的根目錄)

參數

key

key值(從url使用cacheKeyForURL能獲取到)

path

緩存路徑的主目錄

返回值

緩存路徑

聲明處

SDImageCache.h

calculateSizeWithCompletionBlock:

- (void)calculateSizeWithCompletionBlock:(nullable SDWebImageCalculateSizeBlock)completionBlock

討論

異步計算硬盤緩存大小。

聲明處

SDImageCache.h

clearDiskOnCompletion:

- (void)clearDiskOnCompletion:(nullable SDWebImageNoParamsBlock)completion

討論

異步清除所有硬盤緩存的圖片。沒有塊方法則立即返回。

參數

completion

一個緩存清除完成后應該被執行的塊,這個塊是可選的。

聲明處

SDImageCache.h

clearMemory

- (void)clearMemory

討論

清理所有內容中的緩存圖片。

聲明處

SDImageCache.h

defaultCachePathForKey:

- (nullable NSString *)defaultCachePathForKey:(nullable NSString *)key

討論

根據一個指定的key獲取默認的緩存路徑。

參數

key

key值(可以在url中使用cacheKeyForURL獲取到)

返回值

默認緩存路徑。

聲明處

SDImageCache.h

deleteOldFilesWithCompletionBlock:

- (void)deleteOldFilesWithCompletionBlock:(nullable SDWebImageNoParamsBlock)completionBlock

討論

異步從硬盤移除所有已過期的圖片緩存。沒有塊方法則直接返回。

參數

completionBlock

一個緩存過期后立即被執行的塊。(這個參數是可選的)

聲明處

SDImageCache.h

diskImageExistsWithKey:completion:

- (void)diskImageExistsWithKey:(nullable NSString *)key completion:(nullable SDWebImageCheckCacheCompletionBlock)completionBlock

討論

異步檢查在硬盤緩存圖片是否已經存在(不加載圖片)。
注意: 完成塊一只在主線程中執行。

參數

key

描述url的key。

completionBlock

檢查完成后這個塊被執行。

聲明處

SDImageCache.h

getDiskCount

- (NSUInteger)getDiskCount

討論

在硬盤緩存中獲取圖片的數量。

聲明處

SDImageCache.h

getSize

- (NSUInteger)getSize

討論

獲取被硬盤緩存使用的大小。

聲明處

SDImageCache.h

imageFromCacheForKey:

- (nullable UIImage *)imageFromCacheForKey:(nullable NSString *)key

討論

檢查內存緩存后異步查詢內存或硬盤的緩存。(譯者注:感覺這個內容和方法不符合啊,讀者可以看看英文版)

參數

key

用于保存圖片的唯一key。

聲明處

SDImageCache.h

imageFromDiskCacheForKey:

- (nullable UIImage *)imageFromDiskCacheForKey:(nullable NSString *)key

討論

異步查詢硬盤緩存。

參數

key

用于保存圖片的唯一key。

聲明處

SDImageCache.h

imageFromMemoryCacheForKey:

- (nullable UIImage *)imageFromMemoryCacheForKey:(nullable NSString *)key

討論

異步查詢內存緩存。

參數

key

用于保存圖片的唯一key。

聲明處

SDImageCache.h

initWithNamespace:

- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns

討論

根據一個指定的命名空間初始化一個新的存儲緩存。

參數

ns

這個存儲緩存的命名空間。

聲明處

SDImageCache.h

initWithNamespace:diskCacheDirectory:

- (nonnull instancetype)initWithNamespace:(nonnull NSString *)ns diskCacheDirectory:(nonnull NSString *)directory

討論

根據指定的命名空間和文件夾初始一個新的緩存空間。

參數

ns

這個緩存空間使用的命名空間。

directory

緩存圖片到硬盤的目錄中。

聲明處

SDImageCache.h

makeDiskCachePath:

- (nullable NSString *)makeDiskCachePath:(nonnull NSString *)fullNamespace

(譯者注:原文中沒有介紹。呵呵噠)

queryCacheOperationForKey:done:

- (nullable NSOperation *)queryCacheOperationForKey:(nullable NSString *)key done:(nullable SDCacheQueryCompletedBlock)doneBlock

討論

異步查詢緩存并在完成后調用完成塊。

參數

key

唯一的key用來保存需要的圖片。

doneBlock

完成塊。如果操作被取消則不調用完成塊。

返回值

包含緩存操作的一個NSOperation實例。

聲明處

SDImageCache.h

removeImageForKey:fromDisk:withCompletion:

- (void)removeImageForKey:(nullable NSString *)key fromDisk:(BOOL)fromDisk withCompletion:(nullable SDWebImageNoParamsBlock)completion

討論

從內存中異步的移除圖片,可選的從硬盤異步的移除圖片。

參數

key

唯一的圖片緩存key

fromDisk

如果設置為YES,同時完整的從硬盤移除。

completion

一個當圖片已經被移除后執行的塊,這個塊是可選的。

聲明處

SDImageCache.h

removeImageForKey:withCompletion:

- (void)removeImageForKey:(nullable NSString *)key withCompletion:(nullable SDWebImageNoParamsBlock)completion

討論

異步的從內存和硬盤緩存移除圖片。

參數

key

唯一的圖片緩存key。

completion

一個當圖片被移除后執行的塊。這個塊是可選的,可以設置為nil。

聲明處

SDImageCache.h

storeImage:forKey:completion:

- (void)storeImage:(nullable UIImage *)image forKey:(nullable NSString *)key completion:(nullable SDWebImageNoParamsBlock)completionBlock

討論

根據提供的key異步的將一張圖片保存到內存和硬盤緩存。

參數

image

存儲的圖片。

key

唯一的圖片緩存key,通常為圖片的絕對URL。

completionBlock

一個當操作完成后被執行的塊。

聲明處

SDImageCache.h

storeImage:forKey:toDisk:completion:

- (void)storeImage:(nullable UIImage *)image forKey:(nullable NSString *)key toDisk:(BOOL)toDisk completion:(nullable SDWebImageNoParamsBlock)completionBlock

討論

根據提供的key異步存儲一張圖片到內存和硬盤緩存中。

參數

image

圖片存儲。

key

唯一圖片緩存的key,通常它是圖片的絕對URL。

toDisk

如果為YES,保存圖片到硬盤緩存中。

completionBlock

一個在操作完成后執行的塊。

聲明處

SDImageCache.h

storeImage:imageData:forKey:toDisk:completion:

- (void)storeImage:(nullable UIImage *)image imageData:(nullable NSData *)imageData forKey:(nullable NSString *)key toDisk:(BOOL)toDisk completion:(nullable SDWebImageNoParamsBlock)completionBlock

討論

根據提供的key異步存儲一張圖片到內存和硬盤緩存中。

參數

image

圖片存儲。

imageData

服務器返回的圖片數據,這表示將會為了保存質量和節約CPU使用硬盤緩存代替轉換提供的圖片對象為一個存儲/壓縮的圖片格式。

key

唯一圖片緩存key,通常它是圖片絕對URL。

toDisk

如果為YES,保存圖片到硬盤緩存。

completionBlock

一個在操作完成后執行的塊。

聲明處

SDImageCache.h

storeImageDataToDisk:forKey:

- (void)storeImageDataToDisk:(nullable NSData *)imageData forKey:(nullable NSString *)key

討論

根據提供的key異步存儲圖片的NSData到硬盤緩存中。
警告: 這個方法是異步執行的,確保從ioQueue中進行調用。

參數

imageData

存儲的image數據。

key

唯一的圖片緩存key,通常它是圖片的絕對URL。

聲明處

SDImageCache.h

// END
2017-9-1 SDWebImage的說明文檔沒有AFNetworking的寫的好。特別是命名,方法的介紹。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容