Skip to content

Commit df751e7

Browse files
committed
added option to disable memory cache
use this: ```shouldDisableMemoryCache``` to toggle memory cache
1 parent a9ea132 commit df751e7

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

SDWebImage/SDImageCache.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ typedef void(^SDWebImageCalculateSizeBlock)(NSUInteger fileCount, NSUInteger tot
4747
*/
4848
@property (assign, nonatomic) BOOL shouldDisableiCloud;
4949

50+
/**
51+
* use memory cache [defaults to YES]
52+
*/
53+
@property (assign, nonatomic) BOOL shouldCacheImagesInMemory;
54+
5055
/**
5156
* The maximum "total cost" of the in-memory image cache. The cost function is the number of pixels held in memory.
5257
*/

SDWebImage/SDImageCache.m

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,9 @@ - (id)initWithNamespace:(NSString *)ns diskCacheDirectory:(NSString *)directory
116116
// Set decompression to YES
117117
_shouldDecompressImages = YES;
118118

119+
// memory cache enabled
120+
_shouldCacheImagesInMemory = YES;
121+
119122
// Disable iCloud
120123
_shouldDisableiCloud = YES;
121124

@@ -196,9 +199,11 @@ - (void)storeImage:(UIImage *)image recalculateFromImage:(BOOL)recalculate image
196199
if (!image || !key) {
197200
return;
198201
}
199-
200-
NSUInteger cost = SDCacheCostForImage(image);
201-
[self.memCache setObject:image forKey:key cost:cost];
202+
// if memory cache is enabled
203+
if (self.shouldCacheImagesInMemory) {
204+
NSUInteger cost = SDCacheCostForImage(image);
205+
[self.memCache setObject:image forKey:key cost:cost];
206+
}
202207

203208
if (toDisk) {
204209
dispatch_async(self.ioQueue, ^{
@@ -290,6 +295,7 @@ - (UIImage *)imageFromMemoryCacheForKey:(NSString *)key {
290295
}
291296

292297
- (UIImage *)imageFromDiskCacheForKey:(NSString *)key {
298+
293299
// First check the in-memory cache...
294300
UIImage *image = [self imageFromMemoryCacheForKey:key];
295301
if (image) {
@@ -298,7 +304,7 @@ - (UIImage *)imageFromDiskCacheForKey:(NSString *)key {
298304

299305
// Second check the disk cache...
300306
UIImage *diskImage = [self diskImageForKey:key];
301-
if (diskImage) {
307+
if (diskImage && self.shouldCacheImagesInMemory) {
302308
NSUInteger cost = SDCacheCostForImage(diskImage);
303309
[self.memCache setObject:diskImage forKey:key cost:cost];
304310
}
@@ -369,7 +375,7 @@ - (NSOperation *)queryDiskCacheForKey:(NSString *)key done:(SDWebImageQueryCompl
369375

370376
@autoreleasepool {
371377
UIImage *diskImage = [self diskImageForKey:key];
372-
if (diskImage) {
378+
if (diskImage && self.shouldCacheImagesInMemory) {
373379
NSUInteger cost = SDCacheCostForImage(diskImage);
374380
[self.memCache setObject:diskImage forKey:key cost:cost];
375381
}
@@ -400,9 +406,11 @@ - (void)removeImageForKey:(NSString *)key fromDisk:(BOOL)fromDisk withCompletion
400406
if (key == nil) {
401407
return;
402408
}
403-
404-
[self.memCache removeObjectForKey:key];
405-
409+
410+
if (self.shouldCacheImagesInMemory) {
411+
[self.memCache removeObjectForKey:key];
412+
}
413+
406414
if (fromDisk) {
407415
dispatch_async(self.ioQueue, ^{
408416
[_fileManager removeItemAtPath:[self defaultCachePathForKey:key] error:nil];

0 commit comments

Comments
 (0)