假设我有:
ThisClass *castHere = [[ThisClass alloc] init];
但我实际上想要:
ThisClassChosenAtRuntime *castHere = [[ThisClassChosenAtRuntime alloc] init];
我敢肯定,有一些更聪明的方法可以解决这个问题。但这是我追求的结果。我已经将
castHere
置于setValue forKey
语句之下。但是我想动态设置*castHere
。 最佳答案
如果您可以将类名称构建为字符串,则很简单。
NSString *className = @"ThisClassChosenAtRuntime";
id object = [[NSClassFromString(className) alloc] init];
请注意,返回类型为
id
。您可以从id
类型的实例调用任何方法。对于更安全的类型,以及是否可以依赖基类,请输入更多信息。
NSString *className = @"ThisClassChosenAtRuntime";
MyBaseClass *object = [[NSClassFromString(className) alloc] init];
关于ios - 在iOS中动态转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25979343/