美文网首页
NSCache的介绍

NSCache的介绍

作者: KeenV | 来源:发表于2017-09-21 15:05 被阅读0次
NSCache是什么

NSCache对象是存储键值对的可变集合,类似于NSDictionary。NSCache类提供一个编程接口用来添加和删除对象,并根据缓存占用的大小和数量设置丢弃策略。

NSCache对象不同于其它可变集合:

  • NSCache类包含多种自动淘汰策略,来确保缓存不会占用太多的系统内存。如果其它程序需要内存,缓存策略会删除一些缓存,最小化其内存占用。
  • NSCache是线程安全的,当操作缓存时不用加锁。
  • 和NSMutableDictionay不同的是,NSCache不会copy的集合中的键对象。

NSCache通常用来存储临时数据,重用这些对象能够提供性能优势,因为不必被再次计算它们的值。然而,这些对象对于应用程序并不重要,如果内在不足可以被丢弃。如果丢弃,在需要的时候,会再次计算它们的值。

NSCache的属性与方法
//设置缓存占用的内存最大值。默认为0,内存大小没有限制。这并不是一个严格的限制,最终取决于缓存策略。
@property NSUInteger totalCostLimit;   
//设置缓存可保存的对象数量。效果同上。
@property NSUInteger countLimit;
//设置是否自动舍弃那些内存已经被丢弃的对象。
@property BOOL evictsObjectsWithDiscardedContent; 
//获取与指定键关联的对象
- (nullable ObjectType)objectForKey:(KeyType)key;
//在缓存中设置指定键名对应的值
- (void)setObject:(ObjectType)obj forKey:(KeyType)key; 
//在缓存中设置指定键名对应的值,并且指定该键值对的成本
- (void)setObject:(ObjectType)obj forKey:(KeyType)key cost:(NSUInteger)g;
//删除缓存中指定键名的对象
- (void)removeObjectForKey:(KeyType)key;
//删除缓存中的所有对象
- (void)removeAllObjects;
NSDiscardableContent

一个NSDiscardableContent对象的生命周期取决于counter变量。一个此对象是可清除的内存块,并用于跟踪其内存是否正在被其它对象使用。当这块内存正在被使用或仍被需要,此对象的counter这是会>=1。当这块内存将不被使用且可以被丢弃,counter=0.
当counter=0时,如果内存紧张,此内存块可能会被丢弃。调用discardContentIfPossible方法来丢弃内容,它将会释放counter=0的内存。
NSDiscardableContent对象默认初始化counter变量=1以确保它们不会被内存管理系统立即丢弃。因此,必须跟踪counter变量状态。调用beginContentAccess方法使counter+1确保对象不被丢弃。当不再需要此对象时,调用endContentAccess方法使counter-1。 - (BOOL)isContentDiscarded方法返回此对象内存是否已经丢弃。

相关文章

  • NSCache内存缓存

    NSCache 基本使用 NSCache缓存类介绍 NSCache源码

  • 正确使用NSCache

    NSCache NSCache是专门用来进行缓存处理的 NSCache简单介绍 1-1.NSCache是苹果官方提...

  • iOS之NSCache的简单介绍

    NSCache简单说明 NSCache属性和方法介绍 代码示例

  • 了解NSCache的基本使用

    NSCache是专门用来进行缓存处理的, NSCache简单介绍:NSCache是苹果官方提供的缓存类,具体使用和...

  • NSCache介绍

    `之前在做项目需求(需要缓存几百个头像文件和用户数据)时候用到了一种新的缓存方式,之前是用NSMutableDic...

  • NSCache介绍

    NSCache 是一个容器类,类似于NSDIctionary,通过key-value 形式存储和查询值,用于临时存...

  • NSCache的介绍

    NSCache是什么 NSCache对象是存储键值对的可变集合,类似于NSDictionary。NSCache类提...

  • NSCache的介绍

    『导言』 NSCache知识点补充 01.NSCache是专门用来进行缓存处理的(类似字典NSDictary) 0...

  • NScache缓存类

    01.NSCache是专门用来进行缓存处理的, 02.NSCache简单介绍:2-1 NSCache是苹果官方提供...

  • iOS开发-NSCache

    一、NSCache知识点补充 01.NSCache是专门用来进行缓存处理的 02.NSCache简单介绍:2-1 ...

网友评论

      本文标题:NSCache的介绍

      本文链接:https://www.haomeiwen.com/subject/liinsxtx.html