iOS 开发中总会用到各种缓存,YYCache或许是你最好的选择。性能上有优势,用法也很简单。作者ibireme
曾经对比过同类轮子:http://blog.ibireme.com/2015/10/26/yycache/
1.简单架构图
2.YYCache.h方法分析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
@interface YYCache : NSObject // 读取当前数据库名称 @property (copy, readonly) NSString *name; // memoryCache内存缓存,diskCache文件缓存 @property (strong, readonly) YYMemoryCache *memoryCache; @property (strong, readonly) YYDiskCache *diskCache; // 可通过下面三种方法来实例化YYCache对象 - (nullable instancetype)initWithName:(NSString *)name; - (nullable instancetype)initWithPath:(NSString *)path NS_DESIGNATED_INITIALIZER; + (nullable instancetype)cacheWithPath:(NSString *)path; // 禁止通过下面两个方式实例化对象 - (instancetype)init UNAVAILABLE_ATTRIBUTE; + (instancetype)new __attribute__((unavailable("new方法不可用,请用initWithName:"))); // 通过key判断是否缓存了某个东西,第二个法是异步执行,异步回调 - (BOOL)containsObjectForKey:(NSString *)key; - (void)containsObjectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key, BOOL contains))block; // 读--通过key读取缓存,第二个法是异步执行,异步回调 - (nullable id<NSCoding>)objectForKey:(NSString *)key; - (void)objectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key, id<NSCoding> object))block; // 增、改--缓存对象(可缓存遵从NSCoding协议的对象),第二个法是异步执行,异步回调 - (void)setObject:(nullable id<NSCoding>)object forKey:(NSString *)key; - (void)setObject:(nullable id<NSCoding>)object forKey:(NSString *)key withBlock:(nullable void(^)(void))block; // 删--删除缓存 - (void)removeObjectForKey:(NSString *)key; - (void)removeObjectForKey:(NSString *)key withBlock:(nullable void(^)(NSString *key))block; - (void)removeAllObjects; - (void)removeAllObjectsWithBlock:(void(^)(void))block; - (void)removeAllObjectsWithProgressBlock:(nullable void(^)(int removedCount, int totalCount))progress endBlock:(nullable void(^)(BOOL error))end; @end |
3.YYCache使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// 0.初始化YYCache YYCache *cache = [YYCache cacheWithName:@"mydb"]; // 1.缓存普通字符 [cache setObject:@"汉斯哈哈哈" forKey:@"name"]; NSString *name = (NSString *)[cache objectForKey:@"name"]; NSLog(@"name: %@", name); // 2.缓存模型 [cache setObject:(id<NSCoding>)model forKeybireme.com/2015/10/26/yycache/
1.简单架构图2.YYCache.h方法分析
3.YYCache使用
|