美文网首页
iOS开发之NSCache

iOS开发之NSCache

作者: DB001 | 来源:发表于2020-05-16 06:28 被阅读0次

    • NSCache的特点
    1. NSCache是苹果推出专门用来处理内存缓存的类;
    2. NSCache默认是线程安全的,在使用的时候可以不用考虑线程安全的问题;
    3. NSCache使用方法和NSDictionary`类似,当缓存文件超过最大限度的手会开启一个回收过程,吧最老的缓存对象回收;
    4. NSCache可以设置缓存的const(成本)和缓存的数量。
    #import "ViewController.h"
    
    @interface ViewController ()<NSCacheDelegate>
    
    @property (nonatomic, strong) NSCache *cache;
    
    @end
    
    @implementation ViewController
    
    -(NSCache *)cache
    {
        if (_cache == nil) {
            _cache = [[NSCache alloc]init];
            
            //设置最大缓存数据的数量,如果超出该限制那么内部会自动开启一个回收过程把最先存储的数据删除
            //_cache.countLimit = 8;
            
            //设置最大的缓存成本(量) 成本:单位概念
            //image.size.height * image.size.width * image.scale * image.scale SD框架中图片的成本计算
            _cache.totalCostLimit = 8;
            
            //设置代理
            _cache.delegate = self;
            
        }
        return _cache;
    }
    
    - (IBAction)saveBtnClick:(id)sender {
        //存数据
        for (int i = 0; i < 10; ++i) {
            
            NSData *data = [NSData dataWithContentsOfFile:@"/Users/nana/Desktop/placeholder.png"];
            
            //[self.cache setObject:data forKey:@(i)];
            //设置缓存的单位成本 缓存的大小  (8/3 ~ 2张)
            [self.cache setObject:data forKey:@(i) cost:3];
            NSLog(@"存数据---%zd",i);
        }
        
        NSLog(@"____________________");
    }
    - (IBAction)checkBtnClick:(id)sender {
        
        //取数据
        for (int i = 0; i < 10; ++i) {
            NSData *data = [self.cache objectForKey:@(i)];
    
            //校验是否有该数据
            if (data) {
                NSLog(@"取数据---%zd",i);
            }
        }
    }
    
    
    #pragma mark -----------------------
    #pragma mark NSCacheDelegate
    /**监听存储的过程*/
    -(void)cache:(NSCache *)cache willEvictObject:(id)obj
    {
        //内部开启回收过程的时候调用
        NSLog(@"--------内部开启回收过程");
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:iOS开发之NSCache

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