Least RecentlyUsed(LRU)缓存的 Objective-C 实现。
创建 LruCache
的子类。例如:一个用于缓存 UIImage
对象的 ImageCache
类。
#import "LruCache.h"
@interface ImageCache : LruCache
@end
重写 sizeOf:
方法以提供存储对象的定制度量。
@implementation ImageCache
- (NSInteger)sizeOf:(NSString *)key value:(id)value
{
UIImage *img = (UIImage *)value;
CGSize size = img.size;
return (NSInteger)ceil(size.height * size.width * img.scale * 4);
}
@end
实例化 ImageCache
并使用 put:
和 get:
方法来存储和检索对象。
ImageCache *imageCache = [[ImageCache alloc] initWithMaxSize:1024 * 1024 * 30]; // 30MB image cache.
NSString *key = @"img.png";
UIImage *img = [UIImage imageNamed:@"img.png"];
[imageCache put:key value:img];
UIImage *img = [imageCache get:key];
使用 CocoaPods 安装
pod 'LruCache'
LruCache
在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE 文件。