3

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

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

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

这是它可能看起来的分解。我想尽量避免使用巨大的案例风格声明。

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

有任何想法吗?

干杯

4

2 回答 2

30

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

Class c = NSClassFromString(@"ClassName");
id obj = [[c alloc] init];
于 2010-02-01T09:08:14.363 回答
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];
于 2010-02-01T09:15:57.370 回答