目标c动态对象创建

时间:2010-02-01 08:56:07

标签: objective-c class creation

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

在php中你可以用字符串替换类名,但我怀疑它在Objective c中是那么容易。

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

这是对它可能是什么样的细分。我想尽量避免使用巨大的案例风格声明。

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

任何想法?

干杯

2 个答案:

答案 0 :(得分:30)

您可以使用Class

动态获取NSClassFromString()个对象
Class c = NSClassFromString(@"ClassName");
id obj = [[c alloc] init];

答案 1 :(得分:6)

您可以使用以下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];