一、模拟SDWebImage

1.我们用SDWebImage下载图片的时候,只需要这一句话,
[self.iconView sd_setImageWithURL:[NSURL URLWithString:appInfo.icon]];
我们能不能自己写一个类,也实现同样的功能,在写这个类的过程中,你们要改变自己的想法,代码不是从上往下一行一行写的,我们应该把不同的代码放在不同的类中来完成,
2.我们要做这件事,先要了解自定义Operation的知识,

NSOperation是一个抽象类,无法直接使用,我们之前要使用NSOperation的话,用的是它的子类,之前用的分别是两个子类,
1)NSInvocationOperation:创建一个NSInvocationOperation,要指定一个方法,
2)NSBlockOperation:创建一个NSBlockOperation,要指定一个block,
为什么要自定义Operation,用blockOperation多方便啊,用blockOperation是不是得在当前类中去写这个block,在Controller里边去写这个block,在block里边去完成下载的操作,我们现在想干什么,我们是不是想把整个下载的操作给它分离出来,把整个下载操作给它挪到一个单独的类中来,并且以后下载的时候,还要异步下载,
我们可以把整个下载的操作,封装到一个Operation中,
3.我们新建一个项目

name:02-自定义Operation
我们新建一个类,继承自NSOperation,叫做HMDownloaderOperation,

我们新建好了这个Operation之后,里边要写什么呢,

我们之前说过,使用Operation有两种方式,一种是调用start方法,另一种是添加到队列,不管是哪种方式,最终都在让这个操作执行什么,执行的是操作的main方法,

我们要让它异步去下载,我们可以把操作添加到队列里边,让它自动去执行main方法,所以,我们下一步,要重写父类的main方法,

重写完main方法以后,这个不着急写代码呢,先要创建一个@autoreleasepool,

为什么要用@autoreleasepool呢