【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-解决错行问题 Objective-C语言】

一、刚刚,我们做了图片缓存,图片缓存解决了什么问题

1.图片缓存解决了什么问题

// 5 图片缓存-----把网络上下载的图片,保存到内存

// 解决,图片重复下载,把图片缓存到内存中,节省用户的流量(拿空间换取执行时间)

这就是缓存啊,这才是真正的缓存,缓存是什么意思,就是拿空间换时间,

好,这件事情搞定,我们继续来往下看,看还有什么问题呢,

2.看,瞬间就演示出来了,这张图片是对的吗,植物大战僵尸是这张图片吗,不是吧,这是爸爸去哪儿的图片吧,

我往下拖之后,再往上拖,第一行植物大战僵尸的图片,就换成爸爸去哪儿的图片了吧,

我刚才往上拽了一下,然后这个图片就不对了,这个图片不对了,不是我们希望看到的图片了,再来一次,

应该是这张图片才对吧,刚刚是不是有问题,这个问题好演示出来吗,那我现在是不是演示不出来了,那这个问题什么时候能演示出来呢,我为了把这个问题方便演示出来,更清楚的演示这个问题,我现在来处理一下代码,找到返回cell的这个位置,找到下载图片的这个位置,

现在我干什么呢,我去模拟,某些图片,下载速度特别特别慢,哪些图片下载速度慢呢,基本上就是超出屏幕的那几张图片,indexPath.row > 9,的图片,下载速度特别特别慢,

大于9,我就不数了啊,基本上就是超出屏幕的那几张图片,我们来看一下,超出图片的那几张图片,它如果速度特别慢的话,会有什么样的问题,如果indexPath.row > 9 ,延迟5秒,

// 模拟图片下载速度慢

if(indexPath.row > 9){

[NSThread sleepForTimeInterval:5];

}

5秒还不够是吧,9秒,

运行,往下拖一下,

再往上走一下,

回来之后干什么,等着,发生什么了,哎,图片是不是变了,

植物大战僵尸的图片,换成爸爸去哪儿的图片了吧,捕鱼达人的图片,换成我叫MT的图片了吧,看到没有,为什么,我往下拖动的时候,是不是indexPath.row > 9的那几张图片正在下载呢,我往上走回来,第一张植物大战僵尸的图片,一开始没问题,等9秒之后,就被替换成爸爸去哪儿的图片了,为什么,看左下角这个位置,输出的是下载网络图片吧,看到没有,我们来看一下啊,执行的过程,

我一开始执行的时候,是从网络上下载图片吧,这时候内存里边肯定没有图片,从网络上下载图片,我往上滚了一下

你可能感兴趣的:(Objective-C,objective-c,开发语言,macos)