前言
今天仿照 SDWebImage 自己實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)圖片加載框架
swift版本
源碼已上傳Github:(https://github.com/dfzr86/HNXWebImage.git)
由于需求是給分類增加屬性,但是原生機(jī)制不允許這么做
所以只能使用 OC 中 runtime 里的關(guān)聯(lián)對(duì)象
目的是判斷下載操作是否重復(fù)
正文
代碼如下:
extension UIImageView {
//定義私有結(jié)構(gòu)體,目的是為了防止命名污染整個(gè)命名空間
private struct AssociatedKeys{
static let kWebImageKey = "kWebImageKey"
}
//當(dāng)前下載操作的URL
//使用關(guān)聯(lián)度細(xì)給分類加屬性
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)
}
}
}
最后再說(shuō)兩句
整個(gè)項(xiàng)目的代碼可能寫的還是比較亂,每天堅(jiān)持一點(diǎn)..離大神的腳步也更近一點(diǎn)