一、我们再来做下载操作管理类的第二个任务——缓存管理 1.下载操作管理类,第二个任务,它要去管理缓存,管理缓存的时候,既要管理内存缓存,又要管理磁盘缓存,之前,下载操作管理类,已经完成了下载这件事情,下边,我们回来, 先不考虑磁盘缓存呢,先考虑内存缓存,之前我们做过内存缓存,内存缓存的话,我们要做一件什么事儿,创建一个缓存池, // 图片缓存池 @property(nonatomic,strong)NSMutableDictionary *imageCache; OK,下边,去懒加载,去初始化, - (NSMutableDictionary *)imageCache{ if(_imageCache == nil){ _imageCache = [NSMutableDictionary dictionaryWithCapacity:10]; } return _imageCache; } 图片的缓存池,就有了,下边我们要,当图片下载完成之后,我们应该把图片缓存起来,往下走, 这是不是下载图片,当finishedBlock的时候,图片是不是下载完了,图片下载完了之后,下边我们就要去, // 缓存图片 self.imageCache[urlString] = img; 哎,把图片缓存起来了,那下边,在下载之前,下一次在下载之前,我们应该先去判断,判断图片是否有缓存,如果有缓存的话,那应该去直接从缓存中读取图片,显示图片,如果没有缓存的话,那才去下载图片, // 判断图片是否有缓存 if(self.imageCache[urlString]){ } 注意,在这个位置,我们两件事情都要解决,判断内存缓存,判断磁盘缓存,是不是也得写几行代码呢,我们之前有这样的经验,现在呢,这个方法,它的核心目的,可不是管理缓存,它的目的是什么,是不是专业下载图片, 它的目的就是专业下载图片,我就下载图片,别的事