目标c动态对象创建

Dar*_*ler 3 class creation objective-c

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

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

NSString * className;
id theObject;
className = @"TestObject";
theObject = [[className alloc] init];
Run Code Online (Sandbox Code Playgroud)

这是对它可能的样子的分解.我想尝试避免使用巨大的案例风格声明.

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

有任何想法吗?

干杯

Jes*_*rez 30

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

Class c = NSClassFromString(@"ClassName");
id obj = [[c alloc] init];
Run Code Online (Sandbox Code Playgroud)


Vla*_*mir 6

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

id objc_lookUpClass(const char *name)
id objc_getClass(const char *name)
Run Code Online (Sandbox Code Playgroud)

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

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