zoukankan      html  css  js  c++  java
  • 通过运行时动态给OC分类添加属性

    #import <UIKit/UIKit.h>
    
    /**
     iOS 开发中,分类默认不允许保存属性
     
     如果在分类中,定义一个属性,需要自己实现 getter & setter 方法,而且没有 _成员变量
     
     如果在自己开发的框架中,希望在分类中动态添加属性,可以通过 OC 运行时的关联对象的功能!
     
     运行时非常重要的一个应用:给分类动态添加属性,结果能够让框架包装的更好,让使用者做出最小的修改!
     */
    @interface UIImageView (WebImage)
    
    @property (nonatomic, copy) NSString *urlString;
    
    @end
    #import <objc/runtime.h>
    
    @implementation UIImageView (WebImage)
    
    const void *URLStringKey = "URLStringKey";
    
    - (void)setUrlString:(NSString *)urlString {
    
        /**
         参数:
         1. 属性的持有者
         2. 属性的键值
         3. 属性的数值
         4. 属性的引用类型
         */
        objc_setAssociatedObject(self, URLStringKey, urlString, OBJC_ASSOCIATION_COPY_NONATOMIC);
    //void objc_setAssociatedObject(id object,Void* key , id  value,object_AssociationPolicy policy) }
    - (NSString *)urlString { return objc_getAssociatedObject(self, URLStringKey);
    //
    objc_getAssociatedObject(id object, void* key)
    } @end
  • 相关阅读:
    mybatis-generator.xml
    模板下载
    任务导出
    订单导出
    创建指定日期任务
    字符串的知识
    数组元素反转
    JVM 中知识
    Redis介绍
    JsonP
  • 原文地址:https://www.cnblogs.com/741162830qq/p/4636358.html
Copyright © 2011-2022 走看看