美文网首页
iOS官方文档 Foundation篇---NSCache

iOS官方文档 Foundation篇---NSCache

作者: qianfei | 来源:发表于2019-05-22 13:42 被阅读0次

    NSCache

    一个可变集合,用于临时存储,在资源不足时可能被清除的临时键值对;继承自NSObject;类似于NSMutableDictionary的可变集合;

    • NSCache包含内存销毁策略,确保缓存不会使用太多的系统内存。如果其他应用程序需要内存,则这些策略会从缓存中删除一些项目,从而最大限度地减少内存占用;
    • NSCache是线程安全的,可以从不同的线程添加,删除和查询缓存中的项目;
    • 与对象不同,缓存不会复制放入其中的关键对象。
    使用
    NSCache *cahce = [[NSCache alloc]init];
    // 缓存名称
    cahce.name = @"test";
    
    // 缓存保留的最大对象数
    cahce.countLimit = 5;
    
    // 缓存在开始销毁对象之前可以保留的最大对象数
    cahce.totalCostLimit = 2;
    
    // 是否自动删除可丢弃的内容
    cahce.evictsObjectsWithDiscardedContent = YES;
    
    // 设置缓存代理
    cahce.delegate = self;
    
    // 添加缓存值
    for (NSUInteger i = 0; i < 7; i++) {
        NSString *key = [NSString stringWithFormat:@"key%ld",i];
        NSString *obj = [NSString stringWithFormat:@"%ld",i];
        [cahce setObject:obj forKey:key];
    }
    
    // 取值
    for (NSUInteger i = 0; i < 7; i++) {
        NSString *key = [NSString stringWithFormat:@"key%ld",i];
        NSString *obj = [cahce objectForKey:key];
        NSLog(@"%@ = %@",key,obj);
    /*
        key0 = (null)
        key1 = (null)
        key2 = 2
        key3 = 3
        key4 = 4
        key5 = 5
        key6 = 6
    */
    }
    
    // 删除指定键的缓存
    [cahce removeObjectForKey:@"key0"];
    
    // 删除所有缓存
    [cahce removeAllObjects];
    
    // 缓存中的一个对象即将被删除时(代理方法)
    - (void)cache:(NSCache *)cache willEvictObject:(id)obj{
    
    }
    
    欢迎留言指正,会持续更新。。。

    相关文章

      网友评论

          本文标题:iOS官方文档 Foundation篇---NSCache

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