拓展:本地缓存还有哪些?NSUserDefault如果存储内容过长导致crash
1.NSCache 在系统内存很低时,会自动释放一些对象
2.NSCache 是线程安全的,在多线程操作中,不需要对 Cache 加锁
3.NSCache 的 Key 只是做强引用,不需要实现 NSCopying 协议
NSCache是苹果官方提供的缓存类,它的用法与NSMutableDictionary的用法很相似,在AFNetworking中,使用它来作为图片缓存。
NSCache在系统发出低内存通知时,会自动删减缓存。在以下代码中,不断给NSCache中填充NSData,当大小在500M左右时,系统抛出 Received memory warning. 通知,之后从Cache中获取数据,发现Cache为空。
NSCache可以设置数量限制,通过countLimit与 totalCostLimit来限制cache的数量或者限制cost。当缓存的数量超过countLimit,或者cost之和超过totalCostLimit,NSCache会自动释放部分缓存。
setObject:forKey:cost: 在缓存中设置指定键名对应的值,并且指定该键值对的成本 成本 (cost) 用于计算记录在缓冲中的所有对象的总成本 置对象并指定”成本”,成本可以自行指定 啥叫成本? 例子:缓存图片 缓存 100 张图片 将图片的”宽 * 高”当作成本,图像”像素” 10M 当作缓存成本,无论缓存的多少张照片,只要像素值超过 10M,就自动清理 缓存图像的时候,使用成本,比单纯设置数量要科学!