zoukankan      html  css  js  c++  java
  • NSCache详解

    NSCache---详解

    NSCache:

    • NSCache是苹果官方提供的缓存类,在AFNetworking中,使用它来进行图片缓存。

    • NSCache是线程安全的,在多线程操作中,不需要对Cache进行加锁,NSCache的key只是对对象的强引用,对象不需要实现NSCopying协议,NSCache也不会像NSDictionary一样复制对象。


    NSCache的用法

    • NSCache在系统发出低内存通知时,会自动删除缓存。
      例如当不断给NSCache填充数据时,应用内存会越来越大,当大小在500M左右时,系统抛出Received memory warning ,此时查看内存,发现内存会减少,因为NSCache在内存警报时,会自动删除缓存。

    • NSCache可以设置数量限制和大小设置,countLimit设置数量限制的, totalCostLimit是设置大小的,不过平时基本不用,而且计算也麻烦。

    • 设置代理


    代码

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        
        //系统用来缓存的类
        NSCache * cache = [[NSCache alloc] init];
        
        //totalCostLimit 设置缓存大小
        
        //设置缓存数量,清除的是先缓存的
        cache.countLimit = 5;
        
        cache.delegate = self;
        
        for (NSInteger i = 0; i < 20; i ++) {
            [cache setObject:[NSString stringWithFormat:@"cache - %@",@(i)] forKey:@(i)];
        }
        
        for (NSInteger i = 0; i < 20; i ++) {
            NSLog(@"%@",[cache objectForKey:@(i)]);
        }
        
    }
    

    代理

    //谁不在缓存中
    - (void)cache:(NSCache *)cache willEvictObject:(id)obj {
        
        NSLog(@"%@",obj);
    }
  • 相关阅读:
    仅坚持了9天:京东今日宣布暂停火车票代购业务
    Highcharts JS——制作图表的纯js类库
    eclipse插件——php工具集成
    如何新增histats计数器到自己的 blog
    C#写入文本txt
    我怎么感觉js快无敌了~
    马云卸任演讲全文
    添加好玩的honehoneclock到自己的blog
    C#获取日期的年月日时分秒
    js闭包
  • 原文地址:https://www.cnblogs.com/ldnh/p/5288934.html
Copyright © 2011-2022 走看看