Objective c 实例化目标C中的任意类

Objective c 实例化目标C中的任意类,objective-c,Objective C,我在Objective C中有一个NSMutableArray对象。我根据数据文件的内容填充它,其中包含每个元素应该是的类和一个参数列表。所有可能的类都从公共父类继承 是否有任何方法可以实例化数组的每个元素,而无需在大规模的if-else测试中硬编码每个可能的类?是的,我想memset()会有帮助是的,我想memset()会有帮助您当前在数据文件中存储类的名称以及对象的参数 因此,您可以使用NSClassFromString实例化该自定义类对象并初始化其状态: NSString *_myCust

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


是否有任何方法可以实例化数组的每个元素,而无需在大规模的if-else测试中硬编码每个可能的类?

是的,我想memset()会有帮助

是的,我想memset()会有帮助

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

因此,您可以使用
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];

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

因此,您可以使用
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];

如果您也能控制数据文件的编写,您可能会发现只使用标准的objective C(在其他语言中称为序列化)更容易。这是一种向文件中写入和读取对象的简单方法。

如果您也能控制数据文件的写入,您可能会发现只使用标准的objective C(在其他语言中称为序列化)更容易。这是一种向文件中写入和读取对象的简单方法。

+1点答案。值得一提的是,您如何获取特定属性的选择器(按名称)以设置其值?@Rob-如果属性是使用
@property
声明的,那么最简单的答案就是使用
setValue:forKey:
。即使属性不是使用
@property
声明的,您仍然可以使用
setValue:forKey:
Key-Value编码早于Objective-C2.0的
@property
声明,搜索适当命名的setter,然后直接进行ivar赋值。自定义
init
方法如何?+1点答案。值得一提的是,您如何获取特定属性的选择器(按名称)以设置其值?@Rob-如果属性是使用
@property
声明的,那么最简单的答案就是使用
setValue:forKey:
。即使属性不是使用
@property
声明的,您仍然可以使用
setValue:forKey:
Key-Value编码早于Objective-C2.0的
@property
声明,并在直接ivar赋值后搜索适当命名的setter。那么自定义
init
方法呢?