假设我有:

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/

10-09 17:21