فهرست منبع

Add the SDImageCacheQueryMemoryOnly to specify query memory only

DreamPiggy 8 سال پیش
والد
کامیت
44cddbfdbf
4فایلهای تغییر یافته به همراه10 افزوده شده و 4 حذف شده
  1. 6 2
      SDWebImage/SDImageCache.h
  2. 2 1
      SDWebImage/SDImageCache.m
  3. 1 1
      SDWebImage/SDWebImageManager.h
  4. 1 0
      SDWebImage/SDWebImageManager.m

+ 6 - 2
SDWebImage/SDImageCache.h

@@ -26,14 +26,18 @@ typedef NS_ENUM(NSInteger, SDImageCacheType) {
 };
 
 typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) {
+    /**
+     * By default, we will query disk cache if the memory cache missed. This mask can force to query memory cache only without disk data.
+     */
+    SDImageCacheQueryMemoryOnly = 1 << 0,
     /**
      * By default, we do not query disk data when the image is cached in memory. This mask can force to query disk data at the same time.
      */
-    SDImageCacheQueryDataWhenInMemory = 1 << 0,
+    SDImageCacheQueryDataWhenInMemory = 1 << 1,
     /**
      * By default, we query the memory cache synchronously, disk cache asynchronously. This mask can force to query disk cache synchronously.
      */
-    SDImageCacheQueryDiskSync = 1 << 1
+    SDImageCacheQueryDiskSync = 1 << 2
 };
 
 typedef void(^SDCacheQueryCompletedBlock)(UIImage * _Nullable image, NSData * _Nullable data, SDImageCacheType cacheType);

+ 2 - 1
SDWebImage/SDImageCache.m

@@ -356,7 +356,8 @@ FOUNDATION_STATIC_INLINE NSUInteger SDCacheCostForImage(UIImage *image) {
     
     // First check the in-memory cache...
     UIImage *image = [self imageFromMemoryCacheForKey:key];
-    if (image && !(options & SDImageCacheQueryDataWhenInMemory)) {
+    BOOL shouldQueryMemoryOnly = (options & SDImageCacheQueryMemoryOnly) || (image && !(options & SDImageCacheQueryDataWhenInMemory));
+    if (shouldQueryMemoryOnly) {
         if (doneBlock) {
             doneBlock(image, nil, SDImageCacheTypeMemory);
         }

+ 1 - 1
SDWebImage/SDWebImageManager.h

@@ -25,7 +25,7 @@ typedef NS_OPTIONS(NSUInteger, SDWebImageOptions) {
     SDWebImageLowPriority = 1 << 1,
 
     /**
-     * This flag disables on-disk caching
+     * This flag disables on-disk caching, including cache query and cache storing
      */
     SDWebImageCacheMemoryOnly = 1 << 2,
 

+ 1 - 0
SDWebImage/SDWebImageManager.m

@@ -145,6 +145,7 @@
     NSString *key = [self cacheKeyForURL:url];
     
     SDImageCacheOptions cacheOptions = 0;
+    if (options & SDWebImageCacheMemoryOnly) cacheOptions |= SDImageCacheQueryMemoryOnly;
     if (options & SDWebImageQueryDataWhenInMemory) cacheOptions |= SDImageCacheQueryDataWhenInMemory;
     if (options & SDWebImageQueryDiskSync) cacheOptions |= SDImageCacheQueryDiskSync;