2009-11-29 85 views
0

我想用這種方式創建一個Class對象: Class c = [Class classNamed:[NSString stringWithFormat:@「%sview」,[_shapeClass name]]];Objective C class problem

我的問題是這個錯誤消息:「錯誤:'Class'之前的預期表達式」。 你覺得呢?有什麼問題?感謝您的回覆。

編輯: 我想在開關盒中做到這一點。

回答

0

沒有名爲「Class」的類。 「類」是指向類對象的指針的類型。無論如何,存在NSBundle一個classNamed:方法,這可能是你正在尋找:

Class c = [[NSBundle mainBundle] classNamed:[NSString stringWithFormat:@"%sview", [_shapeClass name]]]; 

如果你知道類已經被加載,你也可以這樣說:

Class c = NSClassFromString([NSString stringWithFormat:@"%sview", [_shapeClass name]]); 
+0

當[NSBundle mainBundle]中的類是否永遠不會被加載? – Chuck 2009-11-29 21:03:55

2

問題是沒有Class這樣的類(並且作爲旁註,這個不存在的類也不響應classNamed:)。

您是否想要創建一類或獲得參考到一個類是不是很清楚。如果是後者,則需要功能NSClassFromString()。如果您想要在運行時動態創建類,則需要使用Objective-C runtime functions來創建類,並進行註冊並根據需要添加方法。