一、解决断网不停下载问题 1.刚刚,我们写了一个自定义cell,下边我们接着来看,刚刚我们遇到一个问题,断网的情况下,是不是就出事儿了,我们来看一下啊,为什么,我现在先把网断了啊,已经把网断了, 把网给断掉了,断掉之后,我们来运行,这个时候会不停的会去下载, 但是又没网,永远下不完,为什么会这样呢,我们看一下执行的过程,那不停的在下载网络图片,肯定是不停的在返回cell, 因为在返回cell的时候,是不是去执行下载操作去,肯定是在不停的执行这个方法,为什么这个方法会不停的执行呢,我们来看,先去创建cell,这块儿肯定是没问题的,然后获取模型数据,也是没有问题的,判断缓存图片,也是没有问题的,如果有的话,直接return cell,就结束掉了,所以这个缓存里边,肯定也是一直没有图片的,这个也是进不来的,再往下, 再往下,这个方法进来没有, // 判断下载操作缓存池 中是否有对应的操作 if(self.downloadCache[appInfo.icon]){ NSLog(@“正在拼命下载图片…”); return cell; } 我们设置个断点, 运行, 没有进来吧,还在不停的下载,是不是它也永远进不来,好,我们把断点去掉,为什么它也永远进不来呢,我们继续来看,注意啊,这块儿没进来,按理说,应不应该进来,应该进来吧,因为我们记录的是正在下载的操作吧,你不是下载没下载完吗,是不是应该进来的,但是它却没进来,这儿是有问题的,这儿画一个问号,往下看, 下边创建自定义操作, 这个延迟也是肯定没有问题的,下边再继续,下载,关键这个位置,下载的时候,没网,它会怎么样,获取不到,它就停到这儿了,还是继续往下执行,是执行完了吗,如果它执行完了,是不是就意味着下载完了,对我们那个下载操作缓存池来说,是不是就下载完了,那这段儿代码到底执行完了吗,这也是一个问号吧,有同学说没有,如果没有的话,程序是不是会停到这个位置这儿来,但是停了没有,没有,是不是一直在下载呢,所以这个位置其实没停,没停说明什么问题,说明下载完了,如果停了,说明正在等着呢,如果没停,说明就下载完了,那下载完了,你下载的是什么呢,有同学说,应该是空,因为根本就没有这个图片,一会儿我们来证明这件事儿,我们接着往下看, 假设下载完了,我也不知道下载的是什么,接着往下看, 如果下载完了,会缓存图片,如果下载完了,会把下载操作缓存池给移除掉,再往下,干什么了,reload,是不是重新加载这个cell,重新加载这个cell,是不是重新执行这个方法,好,