3

我不知道这个的技术术语。我想知道在Objective C中,是否可以像这样声明一个变量:

NSClassFromString(aClassName) *var;

或者

[NSClassFromString(aClassName) class] *var;

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

4

3 回答 3

8

您应该制作id类型的 ivar,然后使其成为动态类型。例如,如果你想动态输入它NSString,你可以这样做:

id ivar;
Class myClass = NSClassFromString(@"NSString");

ivar = [[myClass alloc] initWithString:@"abc"];
于 2013-03-18T01:31:31.520 回答
1

您必须声明varid,然后像这样实例化它:

var = [[NSClassFromString(aClassName) alloc] init];

声明类型的唯一要点是编译时类型检查,因此只要您只向它可以处理的对象抛出消息,就不会有问题。

于 2013-03-18T01:30:03.227 回答
1

id它们是动态类型变量的类型。如果您需要检查变量是否符合特定类,您可以使用-isKindOfClass:.

您可以动态测试一个类是否是某种类型[var isKinkdOfClass:NSClassFromString(aClassName)]

于 2013-03-18T01:30:13.980 回答