一、下载操作管理类 1.我们来看,模拟SDWebImage,我们还需要做哪些事情, 我们先回忆一下啊,最终,我们要做的事情是,给UIImageView做一个分类,将来在Controller里边用的时候,Controller只要给UIImageView一个下载的地址,那它就帮我把图片下载并且显示出来了,我们最终的目标,是只需要它们两个, Controller里边,调用UIImageView的一个方法,就把图片给我显示出来了, UIImageView,它是控件儿,它是不负责下载图片的,所以要想下载图片,我们得去找这么一个类,找这么一个下载的这么一个类,注意,我们找下载的类,找的不是我们刚刚写的这个下载操作的类,因为,刚刚写的这个下载操作的类,它只是下载图片,并没有去处理问题,比如图片重复下载的问题,并没有去做缓存,所以,我们在下载操作的这个类的基础上,在它之上,我们再来做一个类,这个类叫做“下载操作管理类”, 我们会给这个类起一个名字,叫做Manager,它负责什么呢,它负责全局的下载操作,真正下载的时候,是调用这个Manager,它去下载图片,并且它内部要去解决图片重复下载的问题,它内部要去解决图片缓存的问题, 并且,这个类将来要做成单例的形式,因为你要下载,OK,你只要找我就行了,这个人只用存在一次,这个管理者,这个经理,只用存在一次, 将来,它要去下载图片,它让谁去下载,它不去下载啊,它是管理者,它不去下载,它让谁下载,它让具体的下载操作类,就是刚刚我们写的那个DownloaderOperation,并且它管理的可不止是一个操作,下载一个图片,我创建一个Operation,下载两个图片,我创建两个Operation,这是这个Manager,它要去干什么,这就是我们模仿SDWebImage它的一个框架结构, 将来,我们写完之后,Controller,要去使用UIImageView,UIImageView要去调用下载操作管理类,下载操作管理类要去创建Operation,创建下载操作,去下载图片, 到这儿,画的这条圈,还没有问题,最下面这条线是干什么,它里边是下载图片的,当图片下载完成之后,要干什么,回到主线程更新UI,就是调用回调的block,最终是由它里边去调用回调的block,这是整个我们所需要的类, 我们下载操作类写完了,后边该写下载操作管理类了,它里边得创建一个单例的方法, 2.下载操作管理类 在MyWebImage分组中,创建一个类,这个类要继承NSObject,叫做HMDownloaderOperationManager类,一般管理者要管理谁呢,先把要管理的这个人的名字写上来,后边加一个Manager,