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