NSCache的缓存

来源:互联网 发布:最优化理论与算法 编辑:程序博客网 时间:2024/05/21 10:25

NSCache苹果提供的一套缓存机制。 

和NSMutableDictionary使用起来相似。 

线程安全,Mutable开发的类一般都是线程不安全的。 

当内存不足时会自动释放内存(所以从缓存中取数据的时候总要判断是否为空) 。

指定缓存的限额,当缓存超出限额自动释放内存。


- (NSCache *)cache

{

    if (_cache ==nil) {

        _cache = [[NSCachealloc] init];

        

        _cache.delegate =self;

        

        // 设置缓存的个数(限额)

        _cache.countLimit =5;

//设置缓存成本(多少M)

        _cache.totalCostlimit=10M;

    }

    return _cache;

}


/// NSCache的代理方法,在对象将要从cache中移除的时候调用的

- (void)cache:(NSCache *)cache willEvictObject:(id)obj

{

    NSLog(@"移除 %@",obj);

}


    // 循环的向cache中添加对象

    for (int i =0; i < 10; i++) {

        NSString *str = [NSStringstringWithFormat:@"hello_%d",i+1];

        NSLog(@"添加 %@",str);

        NSString *key = [NSStringstringWithFormat:@"key_%d",i];

        

        [self.cachesetObject:str forKey:key];

    }

    

    // 循环的取值

    for (int i =0; i < 10; i++) {

        NSString *key = [NSStringstringWithFormat:@"key_%d",i];

        NSString *str = [self.cacheobjectForKey:key];

        NSLog(@"获取 %@",str);

    }


//清空缓存

[self.cacheremoveAllObjects];


- (void)didReceiveMemoryWarning {

    [superdidReceiveMemoryWarning];

    

    // 注意 : 一旦在 didReceiveMemoryWarning调用移除全部对象的方法之后,那么这个cache永远不会再去添加对象

    [self.cacheremoveAllObjects];

}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 碳酸碱在空气中怎么办 养殖水硬度太低怎么办 dnf主线任务没了怎么办 强制执行2年过了怎么办 绣球一天就蔫了怎么办 水插绣球蔫了怎么办 小孩吃到防潮剂怎么办 狗吃了防腐潮剂怎么办 新买的鲜花蔫了怎么办 咖啡粉受潮结坨怎么办 网购兰花不开花怎么办? 月季移植后蔫了怎么办 月季叶子掉光了怎么办 红鹦鹉鱼变白了怎么办 红鹦鹉鱼生病了怎么办 泡鱿鱼干没有碱怎么办 彩虹6号买了68怎么办 r6买了乞丐版怎么办 狙击精英3闪退怎么办 踩到地雷怎么办 知乎 蛋糕海绵灌胶了怎么办 蝴蝶的翅膀断了怎么办 培乐多彩泥干了怎么办 ps4被ban机了怎么办 塔吊离建筑物8米怎么办 手表带掉边缘皮怎么办 脸皮肤过敏痒肿怎么办 脸过敏发红发肿怎么办 皮肤过敏又红又肿怎么办 春天脸过敏发红痒怎么办 皮卡车后斗生锈怎么办 没带卸妆的东西怎么办 审车尾气过不了怎么办 违章停车条丢了怎么办 停车被城管贴条怎么办 违停告知单丢了怎么办 交通事故责任认定书不服怎么办 对交通事故认定书有异议怎么办 老婆不让我碰她怎么办 车被城管拖走了怎么办 共享汽车没油了怎么办