ios - Objective-C可否做变量注入

 嘉兴布奇乐乐园 发布于 2022-11-06 16:09

在运行时Objective-C能不能想对象实例里注入一个对象?我看框架里都没有这样用的,是否不支持
或者有没有类似魔术方法之类的可以侧面实现?
如果可以实现的话,性能如何?

补充:举例说明

对象

@interface ObjA:NSObject
@end
@implement ObjA
@end
ObjA *obja = [[ObjA alloc] init];
// 在这里运行一段代码,把本没有定义的prop属性注入对象 obja
NSLog(@"%@", obja.prop);

本来ObjA里没有定义prop这个属性,但是我通过 get 方法调用的时候,我希望可以调用到。

1 个回答
  • ObjA *obja = [[ObjA alloc] init];
    objc_setAssociatedObject(obja, @"prop", @"SomeValueForProp", OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    NSLog(@"%@", objc_getAssociatedObject(self, @"prop"));

    输出:

    SomeValueForProp

    另外,你那行NSLog(@"%@", obja.prop); .prop本身就是静态的。

    2022-11-12 01:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有