NSCache 简单用法
来源:互联网 发布:mac大写字母怎么打 编辑:程序博客网 时间:2024/05/21 00:00
在ios中,苹果提供了,NSCache类和NSDictionary很相似,提供key,value的存储,不一样的是NSCache在内存吃紧的时候会做自动释放。
遇到一个问题是,在使用大量图片的app中,需要从存储里面读取数据,每次都从文件系统里面读取文件会造成卡顿现象。
解决办法就是把NSData对象缓存起来,先从NSCache里面读取数据,然后再从文件系统获取数据,提高效率。
方法如下:
步骤1:需要一个单例的NSCache,由于我们的FileUtil本来就是单例的,所以只是需要在初始化FileUtil的时候实例出一个NSCache就行了。
_cache = [[NSCache alloc] init];
步骤2:写文件的时候,把NSData存入NSCache里面
-(void)write:(NSData*)data forKey:(NSString*)key{NSString *filepath = [self filePathForKey:key];[_cache setObject:data forKey:key];dispatch_async(fileQueue, ^{[[NSFileManager defaultManager] createFileAtPath:filepath contents:data attributes:nil];});}
步骤3:读文件时候,先从NSCache里面读取,如果没有再从文件系统中读取。从文件系统中读取到的数据,再放回到NSCache中。
-(NSData*)readForKey:(NSString*)key{if(key==nil){return nil;}NSData *cacheData = [_cache objectForKey:key];if(cacheData){NSLog(@"get data from cache");return cacheData;}else{NSLog(@"miss data from cache");NSString *filepath =[self filePathForKey:key];NSData *fileData = [[NSFileManager defaultManager] contentsAtPath:filepath];if(fileData){[_cache setObject:fileData forKey:key];}return fileData;}}
总结:通过这样的方式,形成了 内存 -> 文件系统 -> 网络图片 的三级图片访问系统。
0 0
- NSCache 简单用法
- iOS NSCache 用法
- NSCache的简单使用
- ios-NSCache简单介绍
- NSCache 简单使用
- iOS---NSCache的简单使用
- NSCache的简单介绍应用
- NSCache的简单使用介绍
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- NSCache
- 数据结构的查找总结
- NSUserDefaults设置bool值重启后bool只设置丢失问题
- TCP/IP(3.7)路由选择协议
- 你的培训离互联网思维还有多远?
- Android Jni开发环境搭建完整版
- NSCache 简单用法
- Android开发之获取手机SIM卡信息
- 判断5张扑克牌的组成
- app-framework学习--隐藏Header Menu于隐藏Footer Menu
- 查看端口号是否被占用情况
- windows wininet api 实现下载web服务器文件(l历史代码,贴出共享)
- 图解单片机下载程序电路原理之USB转串口线、CH340、PL2303、MAX232芯片的使用! .
- 7-类
- 黑马程序员-----Category,protocol和block(一)