SDImageCacheConfig.m 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * This file is part of the SDWebImage package.
  3. * (c) Olivier Poitrey <rs@dailymotion.com>
  4. *
  5. * For the full copyright and license information, please view the LICENSE
  6. * file that was distributed with this source code.
  7. */
  8. #import "SDImageCacheConfig.h"
  9. #import "SDMemoryCache.h"
  10. #import "SDDiskCache.h"
  11. static SDImageCacheConfig *_defaultCacheConfig;
  12. static const NSInteger kDefaultCacheMaxDiskAge = 60 * 60 * 24 * 7; // 1 week
  13. @implementation SDImageCacheConfig
  14. + (SDImageCacheConfig *)defaultCacheConfig {
  15. static dispatch_once_t onceToken;
  16. dispatch_once(&onceToken, ^{
  17. _defaultCacheConfig = [SDImageCacheConfig new];
  18. });
  19. return _defaultCacheConfig;
  20. }
  21. - (instancetype)init {
  22. if (self = [super init]) {
  23. _shouldDisableiCloud = YES;
  24. _shouldCacheImagesInMemory = YES;
  25. _shouldUseWeakMemoryCache = NO;
  26. _shouldRemoveExpiredDataWhenEnterBackground = YES;
  27. _shouldRemoveExpiredDataWhenTerminate = YES;
  28. _diskCacheReadingOptions = 0;
  29. _diskCacheWritingOptions = NSDataWritingAtomic;
  30. _maxDiskAge = kDefaultCacheMaxDiskAge;
  31. _maxDiskSize = 0;
  32. _diskCacheExpireType = SDImageCacheConfigExpireTypeModificationDate;
  33. _fileManager = nil;
  34. _ioQueueAttributes = DISPATCH_QUEUE_SERIAL; // NULL
  35. _memoryCacheClass = [SDMemoryCache class];
  36. _diskCacheClass = [SDDiskCache class];
  37. }
  38. return self;
  39. }
  40. - (id)copyWithZone:(NSZone *)zone {
  41. SDImageCacheConfig *config = [[[self class] allocWithZone:zone] init];
  42. config.shouldDisableiCloud = self.shouldDisableiCloud;
  43. config.shouldCacheImagesInMemory = self.shouldCacheImagesInMemory;
  44. config.shouldUseWeakMemoryCache = self.shouldUseWeakMemoryCache;
  45. config.shouldRemoveExpiredDataWhenEnterBackground = self.shouldRemoveExpiredDataWhenEnterBackground;
  46. config.shouldRemoveExpiredDataWhenTerminate = self.shouldRemoveExpiredDataWhenTerminate;
  47. config.diskCacheReadingOptions = self.diskCacheReadingOptions;
  48. config.diskCacheWritingOptions = self.diskCacheWritingOptions;
  49. config.maxDiskAge = self.maxDiskAge;
  50. config.maxDiskSize = self.maxDiskSize;
  51. config.maxMemoryCost = self.maxMemoryCost;
  52. config.maxMemoryCount = self.maxMemoryCount;
  53. config.diskCacheExpireType = self.diskCacheExpireType;
  54. config.fileManager = self.fileManager; // NSFileManager does not conform to NSCopying, just pass the reference
  55. config.ioQueueAttributes = self.ioQueueAttributes; // Pass the reference
  56. config.memoryCacheClass = self.memoryCacheClass;
  57. config.diskCacheClass = self.diskCacheClass;
  58. return config;
  59. }
  60. @end