zoukankan      html  css  js  c++  java
  • NSCache

    简介

    1)NSCache 是苹果官方提供的缓存类,用法与 NSMutableDictionary 的用法很相似,在 AFNetworking 和 SDWebImage 中,使用它来管理缓存。

    2)NSCache 在系统内存很低时,会自动释放一些对象(备注:在模拟器中内存警告时,缓存不会做清理动作)。开发中为了确保收到内存警告时真正释放内存,最好调用 - (void)removeAllObjects; 方法。

    3)NSCache 是线程安全的,在多线程操作中,不需要对 NSCache 加锁。

    4)NSCache 的 key 只是做强引用,不需要实现 NSCopying协议

    属性:

    /** 名称 */
    @property (copy) NSString *name;
    /** 代理 */
    @property (nullable, assign) id<NSCacheDelegate> delegate;
    /** 缓存空间的最大总成本,超出上限会自动回收对象,默认值是 0,表示没有限制 */
    @property NSUInteger totalCostLimit;
    /** 能够缓存对象的最大数量,默认值是 0,表示没有限制 */
    @property NSUInteger countLimit;
    /** 标识缓存是否回收废弃的内容,默认值是 YES,表示自动回收 */
    @property BOOL evictsObjectsWithDiscardedContent;

    方法:

    /** 
     返回与键值关联的对象
     */
    - (nullable ObjectType)objectForKey:(KeyType)key;
    
    /** 
     在缓存中设置指定键名对应的值,与可变字典不同,缓存对象不会对键名做 copy 操作,0 成本
     */
    - (void)setObject:(ObjectType)obj forKey:(KeyType)key;
    
    /** 
     在缓存中设置指定键名对应的值,并且指定该键值对的成本。当出现内存警告时,或者超出缓存的总成本上限时,缓存会开启一个回收过程,删除部分元素
     @param cost 成本 (cost) 用于计算记录在缓冲中的所有对象的总成本
     */
    - (void)setObject:(ObjectType)obj forKey:(KeyType)key cost:(NSUInteger)g;
    
    /** 
     删除缓存中,指定键名的对象
     */
    - (void)removeObjectForKey:(KeyType)key;
    
    /** 
     删除缓存中所有对象
     */
    - (void)removeAllObjects;

    委托方法:

    /** 
     缓存将要删除对象时调用,注意:不能在此方法中修改缓存!!
     */
    - (void)cache:(NSCache *)cache willEvictObject:(id)obj;

    参考文档:

    NSCache官方文档

  • 相关阅读:
    字符串转XML保存后保证XML的格式
    SmartFoxServer学习(3)--第一个Extension
    SmartFoxServer学习(2)--Extension调试
    SmartFoxServer学习(1)--初步了解
    jmeter 开发自己的java请求 二次开发
    hive 面试题
    美丽说-爬虫记录
    python中re.sub的使用 --解读一段代码
    python 抓取美丽说店铺的宝贝图片及详细信息的实现(爬虫)
    hadoop编码问题,mapreduce中Tex与string的转化 乱码问题
  • 原文地址:https://www.cnblogs.com/xiu619544553/p/5380509.html
Copyright © 2011-2022 走看看