首页 / IOS / IOS缓存之NSCache缓存
IOS缓存之NSCache缓存
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了IOS缓存之NSCache缓存,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2230字,纯文字阅读大概需要4分钟。
内容图文
NSCache:专门做缓存的类
NSCache简介: NSCache是苹果官方提供的缓存类,用法与NSMutableDictionary的用法很相似,在AFNetworking和SDWebImage中,使用它来管理缓存。
NSCache在系统内存很低时,会自动释放一些对象(出自苹果官方文档,不过在模拟器中模拟内存警告时,不会做缓存的清理动作) 为了确保接收到内存警告时能够真正释放内存,最好调用一下removeAllObjects方法。
NScache是线程安全的,在多线程操作中,不需要对Cache加锁。
NScache的key只是做强引用,不需要实现NScopying协议。
NSCache的属性:
delegate代理属性
totalCostLimit :缓存空间的最大成本,超出上限会自动回收对象。默认值是0没有限制。
countLimit:能够缓存对象的最大数量,默认值也是0(默认没有限制)。
(当超出缓存最大成本或数量时,NSCache会把前面的数据即最开始存的给清除掉)
evictsObjectsWithDiscardedContent:标示是否回收废弃的内容,默认值是YES(自动回收)。
NSCache的方法:
-objectForKey:返回与键值关联的对象。
-setObject: forKey: 在缓存中设置指定键名对应的值。与可变字典不同的是,缓存对象不会对键名做copy操作 0成本
-setObject: forKey: cost: 在缓存中设置指定键名对应的值,并且指定该键值对的成本。成本cost用于计算记录在缓冲中所有对象的总成本。当出现内存警告,或者超出缓存的成本上限时,缓存会开启一个回收过程,删除部分元素。
-removeObjectForKey:删除缓存中指定键名的对象。
-removeAllObjects:删除缓存中的所有对象。
委托方法:
-cache: willEvictObject: 缓存将要删除对象时调用,不能在此方法中修改缓存。仅仅用于后台的打印,以便于程序员的测试。
1 #import " ViewController.h " 2 3 @interface ViewController ()<NSCacheDelegate> 4 5 @property (nonatomic, strong) NSCache * myChache; 6 7@end 8 9@implementation ViewController 1011 - (NSCache *)myChache 12{ 13if (_myChache == nil) { 14 _myChache = [[NSCache alloc] init]; 15/** NSCache类以下几个属性用于限制成本 16 NSUInteger totalCostLimit "成本" 限制,默认是0(没有限制) 17 NSUInteger countLimit 数量的限制 默认是0 (没有限制) 18 // 设置缓存的对象,同时指定限制成本 19 -(void)setObject:(id) obj forKey:(id) key cost:(NSUInteger) g 20*/21// 设置数量限额。一旦超出限额,会自动删除之前添加的东西22 _myChache.countLimit = 5; // 设置了存放对象的最大数量23 _myChache.delegate = self; 24 } 25return _myChache; 26} 2728 - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event29{ 30for (int i = 0; i < 10; i ++) { 31 NSString * str = [NSString stringWithFormat:@"%d", i]; 3233 [self.myChache setObject:str forKey:str]; 34 } 35for (int i = 0; i < 10; i ++) { 36 NSLog(@"%@", [self.myChache objectForKey:[NSString stringWithFormat:@"%d", i]]); 37 } 38} 3940 - (void)viewDidLoad { 41 [super viewDidLoad]; 42// Do any additional setup after loading the view, typically from a nib.43 self.view.backgroundColor = [UIColor whiteColor]; 44} 4546 - (void)didReceiveMemoryWarning { 47 [super didReceiveMemoryWarning]; 48// Dispose of any resources that can be recreated.49} 5051@end
原文:http://www.cnblogs.com/YU411524/p/4933475.html
内容总结
以上是互联网集市为您收集整理的IOS缓存之NSCache缓存全部内容,希望文章能够帮你解决IOS缓存之NSCache缓存所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。