2014-09-22 61 views
0

比方说,我有:在iOS中动态投射?

ThisClass *castHere = [[ThisClass alloc] init]; 

但我想有效:

ThisClassChosenAtRuntime *castHere = [[ThisClassChosenAtRuntime alloc] init]; 

我敢肯定有一些更聪明的方式去了解这一点。但这是我追求的结果。我已经有castHere遭受setValue forKey陈述。但我想动态设置*castHere

+3

你的问题不清楚。你想改变你的班的名字吗? – Bejibun 2014-09-22 17:02:48

+0

部分答案是使用'id castHere = ...',但其余部分取决于您如何选择要分配的类。 – 2014-09-22 17:04:35

+0

我有几个类,并且想要选择哪一个应用于* castHere。每个类都有不同的属性名称。 – Bill3 2014-09-22 17:05:26

回答

3

如果您可以将类名建立为字符串,那很简单。

NSString *className = @"ThisClassChosenAtRuntime"; 
id object = [[NSClassFromString(className) alloc] init]; 

请注意,返回类型是id。您可以从类型为id的实例调用任何方法。

对于更安全的类型,如果您可以依赖基类,则可以。

NSString *className = @"ThisClassChosenAtRuntime"; 
MyBaseClass *object = [[NSClassFromString(className) alloc] init]; 
+0

就是这样!谢谢Jeffery和Phillip。 – Bill3 2014-09-22 17:40:57