让Category支持添加属性与成员变量

来源:互联网 发布:轻便婴儿车推荐 知乎 编辑:程序博客网 时间:2024/06/05 04:56
Category是Objective-C中常用的语法特性,通过它可以很方便的为已有的类来添加函数。但是Category不允许为已有的类添加新的属性或者成员变量。    

一种常见的办法是通过runtime.h中objc_getAssociatedObject / objc_setAssociatedObject来访问和生成关联对象。通过这种方法来模拟生成属性。

//NSObject+IndieBandName.h@interface NSObject (IndieBandName)@property (nonatomic, strong) NSString *indieBandName;@end

上面是头文件声明,下面的实现的.m文件:

// NSObject+IndieBandName.m    #import "NSObject+Extension.h"#import <objc/runtime.h>static const void *IndieBandNameKey = &IndieBandNameKey;    @implementation NSObject (IndieBandName)@dynamic indieBandName;- (NSString *)indieBandName {    return objc_getAssociatedObject(self, IndieBandNameKey);}- (void)setIndieBandName:(NSString *)indieBandName{    objc_setAssociatedObject(self, IndieBandNameKey, indieBandName, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}@end


0 0
原创粉丝点击