NSCache使用

苹果官方的解释

An NSCache object is a mutable collection that stores key-value pairs, similar to an NSDictionary object. The NSCache class provides a programmatic interface to adding and removing objects and setting eviction policies based on the total cost and number of objects in the cache.(NSCache是系统提供的一种类似于集合(NSMutableDictionary)的缓存)

NSCache objects differ from other mutable collections in a few ways:

  • The NSCache class incorporates various auto-eviction policies, which ensure that a cache doesn’t use too much of the system’s memory. If memory is needed by other applications, these policies remove some items from the cache, minimizing its memory footprint.(大意: NSCache具有自动删除的功能,以减少系统占用的内存)
  • You can add, remove, and query items in the cache from different threads without having to lock the cache yourself. (大意:NSCache是线程安全的,不需要加线程锁)
  • Unlike an NSMutableDictionary object, a cache does not copy the key objects that are put into it.(键对象不会像 NSMutableDictionary 中那样被复制。(键不需要实现 NSCopying 协议)。)

NSCache的属性以及方法介绍

@property NSUInteger totalCostLimit; //缓存的容量

@property NSUInteger countLimit;//缓存的个数

@property BOOL evictsObjectsWithDiscardedContent; //标识缓存是否自动舍弃那些内存已经被丢弃的对象(discardable-content object)默认是YES

delegate

//当要清理对象的时候调用

- (void)cache:(NSCache *)cache willEvictObject:(id)obj;

demo

  

时间: 2024-08-27 01:56:04

NSCache使用的相关文章

多线程与网络之SDWebImage和NSCache

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

NSCache使用常见错误

NSCache用来存储缓存数据的时候.和NSDictionary功能类似, 可是NSCache有一个特别的问题: 一旦接收到内存警告之后,假设使用[NSCache removeAllObjects]处理就不能把图片存放到内存中, 之后全部的图片都是从沙盒中取的不能再次存放到内存中,由于框架的内存警告做了[NScache removeAllObjects]操作[NSCache removeAllObjects]操作之后不能再往NSCache中设置数据

NSCache 新手求带飞

NSCache是系统提供的一种类似于集合(NSMutableDictionary)的缓存, NSCache具有自动删除的功能,以减少系统占用的内存. 下面是简单的点击事件使用cache: - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //系统用来缓存的类 NSCache * cache = [[NSCache alloc] init]; //totalCostLimit 设置缓存大小

step 3 NSCache

NSCache 介绍 NSCache 是苹果提供的一个专门用来做缓存的类 使用和 NSMutableDictionary 非常相似 是线程安全的 当内存不足的时候,会自动清理缓存 程序开始时,可以指定缓存的数量 & 成本 方法 1  取值 ?                     - (id)objectForKey:(id)key; 2  设置对象,0成本 ?                     - (void)setObject:(id)obj forKey:(id)key; 3  设

NSCache

NSCache:专门做缓存的类 NSCache简介:NSCache是苹果官方提供的缓存类,用法与NSMutableDictionary的用法很相似,在AFNetworking和SDWebImage中,使用它来管理缓存. NSCache在系统内存很低时,会自动释放一些对象(出自苹果官方文档,不过在模拟器中模拟内存警告时,不会做缓存的清理动作) 为了确保接收到内存警告时能够真正释放内存,最好调用一下removeAllObjects方法. NScache是线程安全的,在多线程操作中,不需要对Cache

iOS7: 漫谈基础集合类(NSArray,NSSet,NSOrderedSet,NSDictionary,NSMapTable,NSHashTable, NSPointerArray, NSIndexSet,NSCache, NSFastEnumeration)

基础集合类是每一个Mac/iOS应用的基本组成部分.在本文中,我们将对”老类”(NSArray, NSSet)和”新类”(NSMapTable, NSHashTable, NSPointerArray)进行一个深入的研究,探索每一个的效率细节,并讨论其使用场景. 提示:本文包含一些参照结果,但它们并不意味着绝对精确,也没有进行多个.复杂的测试.这些结果的目的是给出一个快速和主要的运行时统计.所有的测试基于iPhone 5s,使用Xcode 5.1b1和iOS 7.1b1,64位的程序.编译选项设

iOS开发之缓存框架、内存缓存、磁盘缓存、NSCache、TMMemoryCache、PINMemoryCache、YYMemoryCache、TMDiskCache、PINDiskCache

1.在项目中我们难免会用到一些缓存方式来保存服务器传过来的数据,以减少服务器的压力. 缓存的方式分为两种分别为内存缓存和磁盘缓存,内存缓存速度快容量小,磁盘缓存容量大速度慢可持久化.常见的内存缓存有NSCache.TMMemoryCache.PINMemoryCache.YYMemoryCache.常见的磁盘缓存有TMDiskCache.PINDiskCache.YYCache. 1.本文章着重讲下YYCache. 这是为什么呢,因为他比其他的缓存框架更加高效,使用方便. YYCache: 去掉

NSCache的简单使用

简介 1)NSCache 是苹果官方提供的缓存类,用法与 NSMutableDictionary 的用法很相似,在 AFNetworking 和 SDWebImage 中,使用它来管理缓存. 2)NSCache 在系统内存很低时,会自动释放一些对象(备注:在模拟器中内存警告时,缓存不会做清理动作).开发中为了确保收到内存警告时真正释放内存,最好调用 - (void)removeAllObjects; 方法. 3)NSCache 是线程安全的,在多线程操作中,不需要对 NSCache 加锁. 4)

NSCache类的简单介绍

最近看SDWebImage,里面的内存缓存用到了NSCache这个类,由于以前没有使用过,特此记录学习一下. NSCache NSCache是苹果官方提供的缓存类,用法和NSMutableDictonary非常类似. NSCache是一个类似于集合的容器,即缓存.它存储key-value,这一点非常类似字典.开发者一般用NSCache来缓存临时存储短时间但是使用成本高的对象.重用这些对象可以优化性能,因为它们的值不在被重新计算.另外一方面,这些对象对于程序来说是不要紧的,在内存紧张的时候会被丢弃