From c113f2228fa23d4865600a31e4f11d7d670c5dfc Mon Sep 17 00:00:00 2001 From: DreamPiggy Date: Tue, 2 Feb 2021 18:46:36 +0800 Subject: [PATCH] Sync the SDImageCache logic from SDWebImage 5.10.0 --- .../YYCache/YYCacheBridge/YYCache+SDAdditions.m | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/SDWebImageYYPlugin/Classes/YYCache/YYCacheBridge/YYCache+SDAdditions.m b/SDWebImageYYPlugin/Classes/YYCache/YYCacheBridge/YYCache+SDAdditions.m index dfc67d9..395d817 100644 --- a/SDWebImageYYPlugin/Classes/YYCache/YYCacheBridge/YYCache+SDAdditions.m +++ b/SDWebImageYYPlugin/Classes/YYCache/YYCacheBridge/YYCache+SDAdditions.m @@ -111,13 +111,15 @@ @implementation YYCache (SDAdditions) @autoreleasepool { UIImage *diskImage; - SDImageCacheType cacheType = SDImageCacheTypeNone; if (image) { // the image is from in-memory cache, but need image data diskImage = image; - cacheType = SDImageCacheTypeMemory; } else if (diskData) { - cacheType = SDImageCacheTypeDisk; + BOOL shouldCacheToMomery = YES; + if (context[SDWebImageContextStoreCacheType]) { + SDImageCacheType cacheType = [context[SDWebImageContextStoreCacheType] integerValue]; + shouldCacheToMomery = (cacheType == SDImageCacheTypeAll || cacheType == SDImageCacheTypeMemory); + } // decode image data only if in-memory cache missed diskImage = SDImageCacheDecodeImageData(diskData, key, options, context); if (diskImage) { @@ -146,7 +148,7 @@ @implementation YYCache (SDAdditions) diskImage.sd_extendedObject = extendedObject; } } - if (diskImage) { + if (shouldCacheToMomery && diskImage) { NSUInteger cost = diskImage.sd_memoryCost; [self.memoryCache setObject:diskImage forKey:key cost:cost]; } @@ -154,10 +156,10 @@ @implementation YYCache (SDAdditions) if (doneBlock) { if (shouldQueryDiskSync) { - doneBlock(diskImage, diskData, cacheType); + doneBlock(diskImage, diskData, SDImageCacheTypeDisk); } else { dispatch_async(dispatch_get_main_queue(), ^{ - doneBlock(diskImage, diskData, cacheType); + doneBlock(diskImage, diskData, SDImageCacheTypeDisk); }); } }