关于SDWebImage框架的分析
- 什么是SDWebImage
- iOS中著名的牛逼的网络图片处理框架
- 包含的功能:图片下载、图片缓存、下载进度监听、gif处理等等
- 用法极其简单,功能十分强大,大大提高了网络图片的处理效率
- 国内超过90%的iOS项目都有它的影子
1.做准备工作 数据 kvc
2.搭建界面 tableView ,同步方式下载图片
3.异步下载
问题:图片出不来,控件frame=0,但是点击或者滚动图片才会处理
原因:当tableview代理方法返回cell的时候,没有图片,不会创建UIImageView,但是当图片下载完成的时候,再去点击,执行layoutSubviews,根据图片的大小重新布局子控件,生成UIImageView
占位图片:使得一开始就把UIImageView创建出来,等图片下载完成就替换内容
4.自定义cell
问题:
4.1.来回滚动界面,图片"乱跳"
原因:cell出现到界面的时候,需要调用cellForRowAtIndexPath->开启下载图片的异步操作,cell滚出界面,cell回到缓存池,屏幕从底部滚出去的cell就可能是之前滚出去的cell,cell保存了之前的图片样式,并且又重新开启了图片异步下载的操作,当下载完成的时候,图片会赋值给最后一个cell
4.2.已经下载过的图片需要缓存
解决:把下载完成的图片放到model中
5.内存缓存
问题:网络很慢的情况下,来回滚动.,一个图片开启了多个下载的操作,造成流量的浪费
原因:内存缓存永远没有图片,不能拦截重新开启下载
6.操作缓存:保存下载的操作->保证一个图片只开启一个下载
7.内存不够-报警告-不处理-闪退
8.沙盒缓存
9.内存不释放问题:
现象:过了一段时间之后,图片下载完成,才释放