因为UIImage的imageWithData函数是每次画图的时候才将Data解压成ARGB的图像,缓存
因此在每次画图的时候,会有一个解压操做,这样效率很低,可是只有瞬时的内存需求。函数
为了提升效率经过SDWebImageDecoder将包装在Data下的资源解压,而后画在另一张图片上,这样这张新图片就再也不须要重复解压了。线程
这种作法是典型的空间换时间的作法。code
首先NSURLCache是缓存原始数据(raw data)到磁盘或内存,所以每次使用的时候须要将原始数据转换成具体的对象,如UIImage等,这会致使额外的数据解析以及内存占用等,而SDWebImage则是缓存UIImage对象在内存,缓存在NSCache中,同时直接保存压缩过的图片到磁盘中;还有一个问题是当你第一次在UIImageView中使用image对象的时候,图片的解码是在主线程中运行的!而SDWebImage会强制将解码操做放到子线程中。对象
以上记录下来备忘 还不是很理解怎么回事图片