之前在做一个列表功能时,当用户一直滑动列表时,一直会调用sdwebimage去加载图片,这样就会出现,当列表停止时,可视区域cell的图片还没下载完显示默认图片,而前面那些不可视区域的cell图片却加载完了,体验非常不好,原因是sdwebimage下载图片并发数总是有上限,导致先加载的先下载完,后加载的在排队。
利用runloop可完美解决这个问题,代码还简洁。方案就是列表滑动时,不要去调sdwebimage加载图片的方法。
下面先介绍一些相关知识。
NSObject perform系列接口
在调用perform系列方法时,系统会给我们创建一个Timer的source,加到对应的RunLoop上去,timer默认是加在NSDefaultRunLoopMode,所以滑动列表时,会停止调用perform的方法,利用这个特性,我们可以实现,在列表滑动时不去加载图片。
具体实现
效果
当然我在这里只是介绍有这么一种机制能实现这么一个功能,具要怎么实现才能让体验更好,还得开发者自己再去琢磨。