是否可以从字符串声明变量类型?

时间:2013-03-18 01:27:09

标签: ios objective-c

我不知道这个的技术术语。我想在Objective C中,如果有可能声明这样的变量:

NSClassFromString(aClassName) *var;

[NSClassFromString(aClassName) class] *var;

显然,上述两个都不正确。我想要的是动态声明一个变量。 感谢。

3 个答案:

答案 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)]

动态测试某个类是否为某种类型