使用NSCache构建缓存,而非NSDictionary

2017-02-16  本文已影响350人  元哥830

在开发Mac OS X或iOS时,从因特网下载的图片该如何缓存,一般想到的是将内存中的图片保存在字典(NSDictionary)里,稍后使用。其实,NSCache更好,它是Foundation框架为处理这类任务专门设计的。

NSCache 比 NSDictionary胜任原因??

#import "CYYClass.h"

@interface CYYClass ()
{
    NSCache *_cache;
}
@end

@implementation CYYClass

- (instancetype)init
{
    self = [super init];
    if (self) {
        _cache = [[NSCache alloc] init];
        _cache.countLimit = 100;
        _cache.totalCostLimit = 5 * 1024 * 1024;
    }
    return self;
}

- (void)downloadWithURL:(NSURL *)url
{
    NSPurgeableData *cacheData = [_cache objectForKey:url];
    if (cacheData) {
        [cacheData beginContentAccess];
        
        [self useData:cacheData];
        
        [cacheData endContentAccess];
    }else{
        //network init
        //network block -->data
        {
            NSPurgeableData *purgeableData = [[NSPurgeableData alloc] initWithData:data];
            [_cache setObject:purgeableData forKey:url cost:purgeableData.length];
            
            [self useData:cacheData];
            
            [purgeableData endContentAccess];
        }
    }
}

- (void)useData:(NSPurgeableData *)data {}

@end
上一篇 下一篇

猜你喜欢

热点阅读