前言
今天仿照 SDWebImage 自己实现了一个简单的网络图片加载框架
swift版本
源码已上传Github:(https://github.com/dfzr86/HNXWebImage.git)
由于需求是给分类增加属性,但是原生机制不允许这么做
所以只能使用 OC 中 runtime 里的关联对象
目的是判断下载操作是否重复
正文
代码如下:
extension UIImageView {
//定义私有结构体,目的是为了防止命名污染整个命名空间
private struct AssociatedKeys{
static let kWebImageKey = "kWebImageKey"
}
//当前下载操作的URL
//使用关联度细给分类加属性
var currentURL : String? {
get
{
return objc_getAssociatedObject(self, AssociatedKeys.kWebImageKey) as? String
}
set(newValue)
{
if let newValue = newValue
{
objc_setAssociatedObject(
self,
AssociatedKeys.kWebImageKey,
newValue as NSString?,
objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC)
}
}
}
最后再说两句
整个项目的代码可能写的还是比较乱,每天坚持一点..离大神的脚步也更近一点