美文网首页
swift中的"关联对象"

swift中的"关联对象"

作者: __zimu | 来源:发表于2015-12-24 10:37 被阅读386次

前言

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

最后再说两句

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

相关文章

网友评论

      本文标题:swift中的"关联对象"

      本文链接:https://www.haomeiwen.com/subject/dcpvhttx.html