| /* |
| * This file is part of the SDWebImage package. |
| * (c) Olivier Poitrey <rs@dailymotion.com> |
| * |
| * For the full copyright and license information, please view the LICENSE |
| * file that was distributed with this source code. |
| */ |
| |
| #import <Foundation/Foundation.h> |
| #import "SDWebImageCompat.h" |
| |
| typedef NS_ENUM(NSInteger, SDImageCacheType) { |
| /** |
| * The image wasn't available the SDWebImage caches, but was downloaded from the web. |
| */ |
| SDImageCacheTypeNone, |
| /** |
| * The image was obtained from the disk cache. |
| */ |
| SDImageCacheTypeDisk, |
| /** |
| * The image was obtained from the memory cache. |
| */ |
| SDImageCacheTypeMemory |
| }; |
| |
| typedef void(^SDWebImageQueryCompletedBlock)(UIImage *image, SDImageCacheType cacheType); |
| |
| typedef void(^SDWebImageCheckCacheCompletionBlock)(BOOL isInCache); |
| |
| typedef void(^SDWebImageCalculateSizeBlock)(NSUInteger fileCount, NSUInteger totalSize); |
| |
| /** |
| * SDImageCache maintains a memory cache and an optional disk cache. Disk cache write operations are performed |
| * asynchronous so it doesn’t add unnecessary latency to the UI. |
| */ |
| @interface SDImageCache : NSObject |
| |
| /** |
| * Decompressing images that are downloaded and cached can improve performance but can consume lot of memory. |
| * Defaults to YES. Set this to NO if you are experiencing a crash due to excessive memory consumption. |
| */ |
| @property (assign, nonatomic) BOOL shouldDecompressImages; |
| |
| /** |
| * disable iCloud backup [defaults to YES] |
| */ |
| @property (assign, nonatomic) BOOL shouldDisableiCloud; |
| |
| /** |
| * use memory cache [defaults to YES] |
| */ |
| @property (assign, nonatomic) BOOL shouldCacheImagesInMemory; |
| |
| /** |
| * The maximum "total cost" of the in-memory image cache. The cost function is the number of pixels held in memory. |
| */ |
| @property (assign, nonatomic) NSUInteger maxMemoryCost; |
| |
| /** |
| * The maximum number of objects the cache should hold. |
| */ |
| @property (assign, nonatomic) NSUInteger maxMemoryCountLimit; |
| |
| /** |
| * The maximum length of time to keep an image in the cache, in seconds |
| */ |
| @property (assign, nonatomic) NSInteger maxCacheAge; |
| |
| /** |
| * The maximum size of the cache, in bytes. |
| */ |
| @property (assign, nonatomic) NSUInteger maxCacheSize; |
| |
| /** |
| * Returns global shared cache instance |
| * |
| * @return SDImageCache global instance |
| */ |
| + (SDImageCache *)sharedImageCache; |
| |
| /** |
| * Init a new cache store with a specific namespace |
| * |
| * @param ns The namespace to use for this cache store |
| */ |
| - (id)initWithNamespace:(NSString *)ns; |
| |
| /** |
| * Init a new cache store with a specific namespace and directory |
| * |
| * @param ns The namespace to use for this cache store |
| * @param directory Directory to cache disk images in |
| */ |
| - (id)initWithNamespace:(NSString *)ns diskCacheDirectory:(NSString *)directory; |
| |
| -(NSString *)makeDiskCachePath:(NSString*)fullNamespace; |
| |
| /** |
| * Add a read-only cache path to search for images pre-cached by SDImageCache |
| * Useful if you want to bundle pre-loaded images with your app |
| * |
| * @param path The path to use for this read-only cache path |
| */ |
| - (void)addReadOnlyCachePath:(NSString *)path; |
| |
| /** |
| * Store an image into memory and disk cache at the given key. |
| * |
| * @param image The image to store |
| * @param key The unique image cache key, usually it's image absolute URL |
| */ |
| - (void)storeImage:(UIImage *)image forKey:(NSString *)key; |
| |
| /** |
| * Store an image into memory and optionally disk cache at the given key. |
| * |
| * @param image The image to store |
| * @param key The unique image cache key, usually it's image absolute URL |
| * @param toDisk Store the image to disk cache if YES |
| */ |
| - (void)storeImage:(UIImage *)image forKey:(NSString *)key toDisk:(BOOL)toDisk; |
| |
| /** |
| * Store an image into memory and optionally disk cache at the given key. |
| * |
| * @param image The image to store |
| * @param recalculate BOOL indicates if imageData can be used or a new data should be constructed from the UIImage |
| * @param imageData The image data as returned by the server, this representation will be used for disk storage |
| * instead of converting the given image object into a storable/compressed image format in order |
| * to save quality and CPU |
| * @param key The unique image cache key, usually it's image absolute URL |
| * @param toDisk Store the image to disk cache if YES |
| */ |
| - (void)storeImage:(UIImage *)image recalculateFromImage:(BOOL)recalculate imageData:(NSData *)imageData forKey:(NSString *)key toDisk:(BOOL)toDisk; |
| |
| /** |
| * Query the disk cache asynchronously. |
| * |
| * @param key The unique key used to store the wanted image |
| */ |
| - (NSOperation *)queryDiskCacheForKey:(NSString *)key done:(SDWebImageQueryCompletedBlock)doneBlock; |
| |
| /** |
| * Query the memory cache synchronously. |
| * |
| * @param key The unique key used to store the wanted image |
| */ |
| - (UIImage *)imageFromMemoryCacheForKey:(NSString *)key; |
| |
| /** |
| * Query the disk cache synchronously after checking the memory cache. |
| * |
| * @param key The unique key used to store the wanted image |
| */ |
| - (UIImage *)imageFromDiskCacheForKey:(NSString *)key; |
| |
| /** |
| * Remove the image from memory and disk cache synchronously |
| * |
| * @param key The unique image cache key |
| */ |
| - (void)removeImageForKey:(NSString *)key; |
| |
| |
| /** |
| * Remove the image from memory and disk cache asynchronously |
| * |
| * @param key The unique image cache key |
| * @param completion An block that should be executed after the image has been removed (optional) |
| */ |
| - (void)removeImageForKey:(NSString *)key withCompletion:(SDWebImageNoParamsBlock)completion; |
| |
| /** |
| * Remove the image from memory and optionally disk cache asynchronously |
| * |
| * @param key The unique image cache key |
| * @param fromDisk Also remove cache entry from disk if YES |
| */ |
| - (void)removeImageForKey:(NSString *)key fromDisk:(BOOL)fromDisk; |
| |
| /** |
| * Remove the image from memory and optionally disk cache asynchronously |
| * |
| * @param key The unique image cache key |
| * @param fromDisk Also remove cache entry from disk if YES |
| * @param completion An block that should be executed after the image has been removed (optional) |
| */ |
| - (void)removeImageForKey:(NSString *)key fromDisk:(BOOL)fromDisk withCompletion:(SDWebImageNoParamsBlock)completion; |
| |
| /** |
| * Clear all memory cached images |
| */ |
| - (void)clearMemory; |
| |
| /** |
| * Clear all disk cached images. Non-blocking method - returns immediately. |
| * @param completion An block that should be executed after cache expiration completes (optional) |
| */ |
| - (void)clearDiskOnCompletion:(SDWebImageNoParamsBlock)completion; |
| |
| /** |
| * Clear all disk cached images |
| * @see clearDiskOnCompletion: |
| */ |
| - (void)clearDisk; |
| |
| /** |
| * Remove all expired cached image from disk. Non-blocking method - returns immediately. |
| * @param completionBlock An block that should be executed after cache expiration completes (optional) |
| */ |
| - (void)cleanDiskWithCompletionBlock:(SDWebImageNoParamsBlock)completionBlock; |
| |
| /** |
| * Remove all expired cached image from disk |
| * @see cleanDiskWithCompletionBlock: |
| */ |
| - (void)cleanDisk; |
| |
| /** |
| * Get the size used by the disk cache |
| */ |
| - (NSUInteger)getSize; |
| |
| /** |
| * Get the number of images in the disk cache |
| */ |
| - (NSUInteger)getDiskCount; |
| |
| /** |
| * Asynchronously calculate the disk cache's size. |
| */ |
| - (void)calculateSizeWithCompletionBlock:(SDWebImageCalculateSizeBlock)completionBlock; |
| |
| /** |
| * Async check if image exists in disk cache already (does not load the image) |
| * |
| * @param key the key describing the url |
| * @param completionBlock the block to be executed when the check is done. |
| * @note the completion block will be always executed on the main queue |
| */ |
| - (void)diskImageExistsWithKey:(NSString *)key completion:(SDWebImageCheckCacheCompletionBlock)completionBlock; |
| |
| /** |
| * Check if image exists in disk cache already (does not load the image) |
| * |
| * @param key the key describing the url |
| * |
| * @return YES if an image exists for the given key |
| */ |
| - (BOOL)diskImageExistsWithKey:(NSString *)key; |
| |
| /** |
| * Get the cache path for a certain key (needs the cache path root folder) |
| * |
| * @param key the key (can be obtained from url using cacheKeyForURL) |
| * @param path the cache path root folder |
| * |
| * @return the cache path |
| */ |
| - (NSString *)cachePathForKey:(NSString *)key inPath:(NSString *)path; |
| |
| /** |
| * Get the default cache path for a certain key |
| * |
| * @param key the key (can be obtained from url using cacheKeyForURL) |
| * |
| * @return the default cache path |
| */ |
| - (NSString *)defaultCachePathForKey:(NSString *)key; |
| |
| @end |