【问题标题】:Generate classes dynamically动态生成类
【发布时间】:2013-04-26 07:34:05
【问题描述】:

是否可以在 Objective-C 中动态创建类?

我想做这样的事情,但是是动态的:

Mission *mission = [[Mission alloc]init];
        mission.Id = [modelObject Id];
        mission.EntityState = [modelObject EntityState];
        mission.Description = [modelObject Description]; 

所以我尝试了这个

id clonedobject = [[[modelObject class] alloc]init];
for (NSString *key in dic) 
    {
        [[clonedobject valueForKey:[dic objectForKey:key]] addObject:[modelObject valueForKey:[dic objectForKey:key]]];
    }

但是使用此代码,我无法访问例如带有 clonedobject.Id 的 id。它说“在 id 类型的对象上找不到属性 ID。

有没有办法做这样的事情?

[modelObject class] *clonedobject = [[[modelObject class] alloc]init]

【问题讨论】:

标签: objective-c class dynamic


【解决方案1】:

请参考给定的链接.. Creating class at runtime

【讨论】:

  • +1 链接。但是您应该考虑在此处添加该文章的精髓。 (仅供参考)
【解决方案2】:

可以在运行时注册类,但这不是您想要的。

即使您可以在 runtime 中添加类,它也无法帮助您处理 compile-time 类型的变量。即,您仍然不知道 编译时 的类型,因此您仍然不能使用像 clonedobject.id 这样的点符号来使用属性。

你怎么知道这个对象有一个名为id的属性?看来你已经知道它是什么类型了。

【讨论】:

    猜你喜欢
    • 2012-02-07
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 2012-07-24
    • 2011-11-23
    • 1970-01-01
    相关资源
    最近更新 更多