swift中的"关联对象"

前言

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

最后再说两句

整个项目的代码可能写的还是比较乱,每天坚持一点..离大神的脚步也更近一点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,804评论 4 61
  • 文/张钰婉 从前,在广袤无垠的森林里生活着一只狐狸与一只熊,他们过着平行线般的生活,仿佛永远都不会有交集,毕竟它们...
    婉婉Nico阅读 3,836评论 0 0
  • 自从娶了她,从来没有再想过娶别人,这是发自内心的抒发! 周围越来越多优质的剩男剩女,他们自身条件优越,却无法找到理...
    承谦阅读 2,256评论 0 2

友情链接更多精彩内容