在运行时Objective-C能不能想对象实例里注入一个对象?我看框架里都没有这样用的,是否不支持
或者有没有类似魔术方法之类的可以侧面实现?
如果可以实现的话,性能如何?
对象
@interface ObjA:NSObject @end @implement ObjA @end
ObjA *obja = [[ObjA alloc] init]; // 在这里运行一段代码,把本没有定义的prop属性注入对象 obja NSLog(@"%@", obja.prop);
本来ObjA里没有定义prop这个属性,但是我通过 get 方法调用的时候,我希望可以调用到。
阿神2017-04-17 11:31:13
ObjA *obja = [[ObjA alloc] init]; objc_setAssociatedObject(obja, @"prop", @"SomeValueForProp", OBJC_ASSOCIATION_RETAIN_NONATOMIC); NSLog(@"%@", objc_getAssociatedObject(self, @"prop"));
输出:
SomeValueForProp
另外,你那行NSLog(@"%@", obja.prop
); .prop本身就是静态的。