swift中的"關(guān)聯(lián)對(duì)象"

前言

今天仿照 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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,327評(píng)論 4 61
  • 文/張鈺婉 從前,在廣袤無(wú)垠的森林里生活著一只狐貍與一只熊,他們過(guò)著平行線般的生活,仿佛永遠(yuǎn)都不會(huì)有交集,畢竟它們...
    婉婉Nico閱讀 700評(píng)論 0 0
  • 自從娶了她,從來(lái)沒(méi)有再想過(guò)娶別人,這是發(fā)自內(nèi)心的抒發(fā)! 周圍越來(lái)越多優(yōu)質(zhì)的剩男剩女,他們自身?xiàng)l件優(yōu)越,卻無(wú)法找到理...
    承謙閱讀 322評(píng)論 0 2

友情鏈接更多精彩內(nèi)容