标签:
在IOS开发中,Category默认不能增加属性的,但操作runtime就能轻松搞定。
1.给NSObject添加分类NSObject (Extension),
1> 在NSObject+Extension.h中添加
@property (nonatomic, copy) NSString *value;
2> 在NSObject+Extension.m中
#import "NSObject+Extension.h"
#import <objc/runtime.h>
@implementation NSObject (Extension)
static char valueKey; // 关联属性值的key
- (void)setValue:(NSString *)value
{
// 将某个值 跟 某个对象关联起来
// 将某个值 存储到 某个对象中
objc_setAssociatedObject(self, &valueKey, value, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (NSString *)value
{
// 通过valueKey取value值
return objc_getAssociatedObject(self, &valueKey);
}
@end
2. 在viewController中测试
- (void)viewDidLoad {
[super viewDidLoad];
NSString *str = @"jack";
str.value = @"abc";
self.value = @"哈哈哈";
NSLog(@"%@ ", str.name, self.name);
}
运行结果:
2015-06-10 17:07:27.488 运行时的应用-分类增加属性[1698:63864] abc 哈哈哈#import <objc/runtime.h>
初学runtime--实现篇02(Category增加属性)
标签:
原文地址:http://www.cnblogs.com/guozhong/p/4566773.html