如果您有一个已知的类类型字符串,例如@“NSString”,您将创建该类的实例,如下所示:
Class stringClass = NSClassFromString(@"NSString");
NSString* myString = [[stringClass alloc] init];
但是如果你不知道你收到的课程类型怎么办?我的意思是,你知道这将是一个有效的,你只是不知道哪一个......
是否仍然可以创建该类的实例,而不是id
?
答案 0 :(得分:2)
如果您正在呼叫[[unknownClass alloc] init]
,您将始终创建实际的课程。您只是将类保存在id
类型的变量中。但是这个类本身仍然属于它的类型。您还可以将字符串存储在id
变量中,但仍使用字符串方法。 E.g:
id string = @"lalalala";
CGSize size = [string sizeWithFont: [UIFont systemFontOfSize: 12]];
这会回答你的问题吗?