動態(tài)添加屬性
//這是一個擴展馋缅,在擴展中如果@property是不生成set方法的扎谎,也沒有_開頭的實例變量自動生成晌杰!
@implementation NSObject (IMAddProps)
//所以如果想要自己手寫set方法并思,原始方法只能定義一個全局變量(但是這個全局變量會在app運行的時候都會存在)
//所以如果想要真正意義上給擴展中添加實際的實例變量展箱,就需要用到運行時
static NSString *_addedProps;
- (void)setTestProps:(NSString *)testProps{
_addedProps = testProps;
}
- (NSString *)testProps{
return _addedProps;
}
所以下面就用運行時來進行動態(tài)添加實例變量:
#import "NSObject+IMAddProps.h"
#import <objc/message.h>
@implementation NSObject (IMAddProps)
- (void)setTestProps:(NSString *)testProps{
//這里是通過key動態(tài)綁定
objc_setAssociatedObject(self, @"addedProps", testProps, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (NSString *)testProps{
//這里通過key來取得綁定的值
return objc_getAssociatedObject(self, @"addedProps");
}
@end