【问题标题】:objective c dynamic object creation目标c动态对象创建
【发布时间】:2010-02-01 08:56:07
【问题描述】:

给你一个快速的问题。我希望能够创建一个对象的实例。对象类型基于字符串。

在 php 中你可以只用字符串替换类名,但我怀疑在 Objective c 中这很容易。

NSString * className;
id theObject;
className = @"TestObject";
theObject = [[className alloc] init];

这里是它的外观分解。我想尽量避免使用巨大的案例风格声明。

是否可以为此使用选择器系统?

有什么想法吗?

干杯

【问题讨论】:

    标签: objective-c class creation


    【解决方案1】:

    您可以使用NSClassFromString()动态获取Class对象

    Class c = NSClassFromString(@"ClassName");
    id obj = [[c alloc] init];
    

    【讨论】:

    • 毫无疑问,这个社区是最好的。谢谢你。这就像一个魅力
    【解决方案2】:

    您可以使用以下 obj-c 运行时函数之一按名称获取类(您可能需要导入标头:

    id objc_lookUpClass(const char *name)
    id objc_getClass(const char *name)
    

    所以你的代码可能看起来像(虽然还没有测试过):

    NSString * className = @"TestObject";
    id theObject = nil;
    Class myClass = objc_lookUpClass([className UTF8String]);
    if (myClass)
       theObject = [[myClass alloc] init];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      相关资源
      最近更新 更多