如何利用运行时给系统分类添加一个属性?

来源:互联网 发布:js常见设计模式 编辑:程序博客网 时间:2024/05/22 11:30

1>导入头文件

#import

2>添加以下代码

@interface UIButton (DH)

@property (nonatomic, copy) NSString *ID;

@end

#import "UIButton+DH.h"

#import

@implementation UIButton (DH)

- (void)setID:(NSString *)ID

{

// self:该属性添加到哪个对象上

// @selector(ID)表示以这个key存进去(取数据的时候也是靠这个Key)

// ​ OBJC_ASSOCIATION_COPY_NONATOMIC 表示缓存策略。

    objc_setAssociatedObject(self, @selector(ID), ID,OBJC_ASSOCIATION_COPY_NONATOMIC);

}

- (NSString *)ID

{

    returnobjc_getAssociatedObject(self, @selector(ID));

}

@end

上面这种写法就很好的避免了要定义一个const char 类型的key用来标识这个对象。

也可以按照下面这样写:

const char *IDKey = "IDKey";​

然后将上面的​@selector(ID)替换为IDKey。

0 0