在iOS中动态演员?

时间:2014-09-22 16:59:37

标签: ios objective-c

让我说我有:

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

但我有效地希望:

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

我确信有更聪明的方法可以解决这个问题。但这是我追求的结果。我已经castHere发表setValue forKey次陈述。但我想动态设置*castHere

1 个答案:

答案 0 :(得分:3)

如果您可以将类名称构建为字符串,那么这很容易。

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

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

对于更安全的类型,如果你可以依赖基类,那么

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