2012-03-28 78 views
2

一个未知的类的实例。如果你有一类已知类型的字符串,例如像@“的NSString”,你会创建一个类的实例,像这样:创建Objective-C的

Class stringClass = NSClassFromString(@"NSString"); 
NSString* myString = [[stringClass alloc] init]; 

但什么如果你不知道你收到的班级的类型?我的意思是,你知道这将是一个有效的,你只是不知道哪一个...

是否仍然可以创建该类的实例,而不是id

回答

2

如果您致电[[unknownClass alloc] init],您将始终创建实际的课程。你只能在id类型变量中保存课程。但是这个阶级本身仍然属于它的类型。您也可以在id变量中存储字符串,但仍使用字符串方法。例如:

id string = @"lalalala"; 
CGSize size = [string sizeWithFont: [UIFont systemFontOfSize: 12]]; 

这是回答您的问题吗?

+2

你不需要执行'performSelector'舞蹈,事实上它会分散注意力,因为'id'类型可以像任何其他类型一样成为消息。 – 2012-03-28 13:46:33