我不知道这个的技术术语。我想在Objective C中,如果有可能声明这样的变量:
NSClassFromString(aClassName) *var;
或
[NSClassFromString(aClassName) class] *var;
显然,上述两个都不正确。我想要的是动态声明一个变量。 感谢。
答案 0 :(得分:8)
您应该制作id
类型的ivar,然后将其动态输入。例如,如果要动态输入NSString
,可以这样做:
id ivar;
Class myClass = NSClassFromString(@"NSString");
ivar = [[myClass alloc] initWithString:@"abc"];
答案 1 :(得分:1)
您必须将var
声明为id
,然后将其实例化为:
var = [[NSClassFromString(aClassName) alloc] init];
声明类型的唯一要点是编译时类型检查,所以只要你只在它可以处理的对象上抛出消息就不应该有问题。
答案 2 :(得分:1)
id
是动态类型变量的类型。如果您需要检查变量是否符合特定类,则可以使用-isKindOfClass:
。
您可以使用[var isKinkdOfClass:NSClassFromString(aClassName)]