2012-03-28 34 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