Files
PINRemoteImage/Pod/Classes/PINRemoteImageCaching.h
Garrett Moon 0d5437cab6 Don't bother archiving / unarchiving data. (#229)
* 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!
2016-08-20 12:39:34 -07:00

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