IOS-NSCache

NSCache是苹果提供的一个专门用来做缓存的类
使用和NSMutableDictionary非常相似
是线程安全的
当内存不足的时候,会自动清理缓存
程序开始时,可以指定缓存的数量&成本

##
方法
取值
- (id)objectForKey:(id)key;
设置对象,0成本

- (void)setObject:(id)obj forKey:(id)key;
设置对象并指定成本

- (void)setObject:(id)obj forKey:(id)key cost:(NSUInteger)g;
成本示例,以图片为例:

方案一:缓存100张图片
方案二:总缓存成本设定为10M,以图片的宽*高当作成本,图像像素。这样,无论缓存的多少张照片,只要像素值超过10M,就会自动清理
结论:在缓存图像时,使用成本,比单纯设置数量要科学!
删除

- (void)removeObjectForKey:(id)key;
删除全部(不要使用!)

- (void)removeAllObjects;

属性

@propertyNSUInteger totalCostLimit;

缓存总成本
@propertyNSUInteger countLimit;

缓存总数量
@propertyBOOLevictsObjectsWithDiscardedContent;

是否自动清理缓存,默认是YES

注意:内存警告或者超出限制后,缓存中的任何对象,都有可能被清理。使用NSCache做缓存一定要保证能够有恢复的通道!

原文地址:https://www.cnblogs.com/DreamLinku/p/5654443.html