mirror of
https://github.com/zhigang1992/PINRemoteImage.git
synced 2026-06-10 07:10:08 +08:00
* Don't bother archiving / unarchiving data. This change upgrades to PINCache 3.0.1-beta which supports custom archiving and unarchiving. This allows us to avoid using NSArchiver/Archiver which adds a small amount of disk space overhead and between .5 and 10 ms (on an iPhone 4) for each encode / decode. To support this, we *do* have to add versioning for the cache and destroy it for the old versions. I considered adding a process to migrate the images, but because that would have to occur on startup and process all existing images, it could cause issues for very large image cache databases, so I decided against that. * Fix warnings * Fix invalid object test * Cleanup, thanks @chrisdanford!
50 lines
1.6 KiB
Objective-C
50 lines
1.6 KiB
Objective-C
//
|
|
// PINRemoteImageCaching.h
|
|
// Pods
|
|
//
|
|
// Created by Aleksei Shevchenko on 7/25/16.
|
|
//
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
@protocol PINRemoteImageCaching;
|
|
typedef void (^PINRemoteImageCachingObjectBlock)(id<PINRemoteImageCaching> cache, NSString *key, id __nullable object);
|
|
|
|
/**
|
|
* Image Cache is responsible for actual image caching.
|
|
*/
|
|
@protocol PINRemoteImageCaching <NSObject>
|
|
|
|
//******************************************************************************************************
|
|
// Memory cache methods
|
|
//******************************************************************************************************
|
|
- (nullable id)objectFromMemoryCacheForKey:(NSString *)key;
|
|
- (void)cacheObjectInMemory:(id)object forKey:(NSString *)key withCost:(NSUInteger)cost;
|
|
|
|
//******************************************************************************************************
|
|
// Disk cache methods
|
|
//******************************************************************************************************
|
|
- (nullable id)objectFromDiskCacheForKey:(NSString *)key;
|
|
- (void)objectFromDiskCacheForKey:(NSString *)key completion:(nullable PINRemoteImageCachingObjectBlock)completion;
|
|
- (void)cacheObjectOnDisk:(id)object forKey:(NSString *)key;
|
|
|
|
|
|
- (BOOL)objectExistsInCacheForKey:(NSString *)key;
|
|
|
|
- (void)removeCachedObjectForKey:(NSString *)key;
|
|
- (void)removeCachedObjectForKey:(NSString *)key completion:(nullable PINRemoteImageCachingObjectBlock)completion;
|
|
- (void)removeAllCachedObjects;
|
|
|
|
@optional
|
|
|
|
- (void)removeCachedObjectForKeyFromMemoryCache:(NSString *)key;
|
|
|
|
@end
|
|
|
|
|
|
NS_ASSUME_NONNULL_END
|