zoukankan      html  css  js  c++  java
  • EGOCache缓存框架详细讲解

    EGOCache是一个轻量级的缓存框架。用法简单方便,在现在的项目中,我就用到EGOCache来缓存下载过的照片和字符串。

    有人可能会问到,缓存照片还需要用EGOCache吗?AFNetworkingSDWebImage不是已经有这些功能了吗?

    是的,不过AFNetworking和SDWebImage是http。我的项目用的是socket,所以我选择EGOCache来做缓存。用下来觉得EGOCache还是挺强大的。

    EGOCache简介

    EGOCache is a simple, thread-safe key value cache store. It has native support for NSString, UI/NSImage, and NSData, but can store anything that implements <NSCoding>. All cached items expire after the timeout, which by default, is one day.
    

    翻译过来就是:EGOCache一个简单、线程安全的基于 key-value 的缓存框架,原生支持NSString、UI/NSImage、和NSData,也支持储存任何实现协议的类,可以设定缓存过期时间,默认是1天。

    EGOCache只有一个类,EGOCache.h和EGOCache.m两个文件。用法也比较容易掌握,仔细研究一下EGOCache.h的方法,很快就可以上手。

    EGOCache只提供了磁盘缓存,没有提供内存缓存。同时,也提供了清理缓存的方法:

    - (void)clearCache;


    EGOCache还提供了判断缓存是否存在的方法:

    - (BOOL)hasCacheForKey:(NSString* __nonnull)key;
    

    通过Cocoapods直接加入项目

    直接在你的项目的Podfile加入下面一行:

    pod 'EGOCache'
    

    然后执行:

    $ pod update
    

    EGOCache用法

    用EGOCache缓存NSString

    存储:

    NSString *saveString = @"把我保存起来吧";
    [[EGOCache globalCache] setString:saveString forKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[saveString hash]] withTimeoutInterval:24*60*60];
    

    读取:

    NSString *getSaveString = [[EGOCache globalCache] stringForKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveString" hash]]];
    

    是不是感觉跟NSDictionary很相似,确实,前面我们说了EGOCache是基于key-value 的缓存框架。

    用EGOCache缓存UIImage

    存储:

     UIImage *saveImage = [UIImage imageNamed:@"iOSDevTip"];
    [[EGOCache globalCache] setImage:saveImage forKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveImage" hash]] withTimeoutInterval:24*60*60];
    

    读取:

    UIImage *getSaveImage = [[EGOCache globalCache] imageForKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveImage" hash]]];
    

    用EGOCache缓存NSData

    存储:

    NSData *saveData = [NSData data];
    [[EGOCache globalCache] setData:saveData forKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveData" hash]] withTimeoutInterval:24*60*60];
    

    读取:

    UIImage *getSaveData = [[EGOCache globalCache] dataForKey:[NSString stringWithFormat:@"EGOImageLoader-%lu", (unsigned long)[@"SaveData" hash]]];

    原文地址:http://www.superqq.com/blog/2015/07/01/egocachehuan-cun-kuang-jia-xiang-xi-jiang-jie/
    源码下载:https://github.com/enormego/EGOCache

     

  • 相关阅读:
    JedisConnectionException: java.net.ConnectException: Connection refused
    启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
    JAVA 判断一个字符串是不是一个合法的日期格式
    升级openssl
    Linux操作路由
    Linux的用户行为审计
    升级gdb
    Linux的运行级别
    sudo的用法
    Linux缓存清理
  • 原文地址:https://www.cnblogs.com/littlewrong/p/4898063.html
Copyright © 2011-2022 走看看