让我说我有:
ThisClass *castHere = [[ThisClass alloc] init];
但我有效地希望:
ThisClassChosenAtRuntime *castHere = [[ThisClassChosenAtRuntime alloc] init];
我确信有更聪明的方法可以解决这个问题。但这是我追求的结果。我已经castHere
发表setValue forKey
次陈述。但我想动态设置*castHere
。
答案 0 :(得分:3)
如果您可以将类名称构建为字符串,那么这很容易。
NSString *className = @"ThisClassChosenAtRuntime";
id object = [[NSClassFromString(className) alloc] init];
请注意,返回类型为id
。您可以从类型为id
的实例调用任何方法。
对于更安全的类型,如果你可以依赖基类,那么
NSString *className = @"ThisClassChosenAtRuntime";
MyBaseClass *object = [[NSClassFromString(className) alloc] init];