【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-解决断网不停下载问题-封装下载操作 Objective-C语言】

一、解决断网不停下载问题

1.刚刚,我们写了一个自定义cell,下边我们接着来看,刚刚我们遇到一个问题,断网的情况下,是不是就出事儿了,我们来看一下啊,为什么,我现在先把网断了啊,已经把网断了,

通知

把网给断掉了,断掉之后,我们来运行,这个时候会不停的会去下载,

通知

但是又没网,永远下不完,为什么会这样呢,我们看一下执行的过程,那不停的在下载网络图片,肯定是不停的在返回cell,

通知

因为在返回cell的时候,是不是去执行下载操作去,肯定是在不停的执行这个方法,为什么这个方法会不停的执行呢,我们来看,先去创建cell,这块儿肯定是没问题的,然后获取模型数据,也是没有问题的,判断缓存图片,也是没有问题的,如果有的话,直接return cell,就结束掉了,所以这个缓存里边,肯定也是一直没有图片的,这个也是进不来的,再往下,

通知

再往下,这个方法进来没有,

// 判断下载操作缓存池 中是否有对应的操作

if(self.downloadCache[appInfo.icon]){

NSLog(@“正在拼命下载图片…”);

return cell;

}

我们设置个断点,

通知

运行,

通知

没有进来吧,还在不停的下载,是不是它也永远进不来,好,我们把断点去掉,为什么它也永远进不来呢,我们继续来看,注意啊,这块儿没进来,按理说,应不应该进来,应该进来吧,因为我们记录的是正在下载的操作吧,你不是下载没下载完吗,是不是应该进来的,但是它却没进来,这儿是有问题的,这儿画一个问号,往下看,

下边创建自定义操作,

通知

这个延迟也是肯定没有问题的,下边再继续,下载,关键这个位置,下载的时候,没网,它会怎么样,获取不到,它就停到这儿了,还是继续往下执行,是执行完了吗,如果它执行完了,是不是就意味着下载完了,对我们那个下载操作缓存池来说,是不是就下载完了,那这段儿代码到底执行完了吗,这也是一个问号吧,有同学说没有,如果没有的话,程序是不是会停到这个位置这儿来,但是停了没有,没有,是不是一直在下载呢,所以这个位置其实没停,没停说明什么问题,说明下载完了,如果停了,说明正在等着呢,如果没停,说明就下载完了,那下载完了,你下载的是什么呢,有同学说,应该是空,因为根本就没有这个图片,一会儿我们来证明这件事儿,我们接着往下看,

假设下载完了,我也不知道下载的是什么,接着往下看,

通知

如果下载完了,会缓存图片,如果下载完了,会把下载操作缓存池给移除掉,再往下,干什么了,reload,是不是重新加载这个cell,重新加载这个cell,是不是重新执行这个方法,好,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值