SDWebImage是常用的一个加载网络图片的第三方库,分别给UIImageVIew和UIbutton添加了类别,直接可以调用
封装思路:
1、使用异步网络请求加载图片。
2、实现了图片的缓存
缓存分为内存和沙盒两种途径,内存中的缓存图片以key-value的形式存在,如果图片缓存过多的话会自动清理缓存,沙盒目录下的图片保存在Library下的Cache文件夹下,是由用户手动清理缓存的
3、实现了图片的缓存之后,再次启动程序,他会首先检测内存中有没有缓存,如果有直接加载缓存中的图片,如果内存中没有去检测沙盒中有没有缓存,如果有直接加载沙盒中的图片,如果没有直接进行网络请求。
imageView1.sd_setImageWithURL(NSURL(string: "http://static.damai.cn//6d2f40c2-b15e-4646-b84d-27acac971426.jpg"), placeholderImage: UIImage(named: "8.jpg"))
4、调用UIButton的类别,加载网络图片,并且如果不带缓存,options表示的是额外需要处理的功能,CacheMemoryOnly表示只在内存中缓存一份,沙盒中不缓存
button.sd_setImageWithURL(NSURL(string: "http://static.damai.cn//e947b853-41d5-4504-a046-8195ab516d7f.jpg"), forState: UIControlState.Normal, placeholderImage: UIImage(named: "8.jpg"), options: SDWebImageOptions.CacheMemoryOnly)
5.关键字static的作用是什么?
(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;