在Objective C中实例化一个任意类

p.g*_*all 0 objective-c

我在Objective C中有一个NSMutableArray对象.我根据数据文件的内容填充它,其中包含每个元素应该包含的类和参数列表.所有可能的类都继承自公共父类.

有没有办法实例化数组的每个元素而不对大规模if-else测试中的每个可能的类进行硬编码?

Ale*_*lds 7

您当前在数据文件中存储类的名称以及对象的参数.

因此,您可以使用NSClassFromString实例化该自定义类对象并初始化其状态:

NSString *_myCustomClass = // get custom class name from data file...
id _myCustomObject = [[NSClassFromString(_myCustomClass) alloc] init];
// set up _myCustomObject's state from data file's parameters...
[_myMutableArray addObject:_myCustomObject];
[_myCustomObject release];
Run Code Online (Sandbox Code Playgroud)