通过
objc_getAssociatedObject 添加属性 和
objc_setAssociatedObject 获取值
需要#import<objc/runtime.h>
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Person+Add.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
Person *person = [[Person alloc] init];
person.name = @"张三";
[person setType:@"NSString *"];
[person setValue:@"hehe"];
NSLog(@"%@", [person value]);
[person print];
}
return 0;
}
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, copy)NSString *name;
@end
#import "Person.h"
@implementation Person
@end
#import "Person.h"
@interface Person (Add)
- (void)print;
- (void)setType:(NSString *)type;
- (void)setValue:(id)value;
- (id)value;
@end
#import "Person+Add.h"
#import <objc/runtime.h>
@implementation Person (Add)
static NSString *typeStr;
- (void)print {
NSLog(@"%@", self.name);
}
- (void)setType:(NSString *)type {
typeStr = type;
}
- (void)setValue:(id)value {
objc_setAssociatedObject(self, (__bridge const void *)(typeStr), value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
- (id)value {
id pro = objc_getAssociatedObject(self, (__bridge const void *)(typeStr));
return pro;
}
@end