码迷,mamicode.com
首页 > 其他好文 > 详细

通过运行时动态给分类添加属性

时间:2015-07-10 18:28:09      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

#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);
}

- (NSString *)urlString {
    return objc_getAssociatedObject(self, URLStringKey);
}

@end

 

通过运行时动态给分类添加属性

标签:

原文地址:http://www.cnblogs.com/741162830qq/p/4636358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!