• 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);
    }
  • 相关阅读:
    LeetCode 面试题 08.02. 迷路的机器人
    LeetCode 96. 不同的二叉搜索树
    LeetCode 198 打家劫舍
    LeetCode 931 下降路径最小和
    Anaconda的安装及使用教程
    2020-8
    gdb与core dump
    实用linux命令
    offer_JZ25
    javaweb学习笔记整理补课
  • 原文地址:https://www.cnblogs.com/ldnh/p/5288934.html
Copyright © 2020-2023  润新知