2010-02-01 68 views
3

快速問題給你。我想能夠創建一個對象的實例。對象類型基於一個字符串。客觀c動態對象創建

在PHP中,你可以用一個字符串替換類名,但我懷疑它在Objective c中是那麼簡單。

NSString * className; 
id theObject; 
className = @"TestObject"; 
theObject = [[className alloc] init]; 

這裏是它可能看起來像什麼的細分。我想盡量避免使用巨大的案例風格聲明。

這是可以使用選擇器系統嗎?

有什麼想法?

乾杯

回答

6

您可以通過以下OBJ-C運行時函數一個名字得到一個類(您可能需要導入頭:

id objc_lookUpClass(const char *name) 
id objc_getClass(const char *name) 

所以,你的代碼可能看起來像(沒有測試但它):

NSString * className = @"TestObject"; 
id theObject = nil; 
Class myClass = objc_lookUpClass([className UTF8String]); 
if (myClass) 
    theObject = [[myClass alloc] init]; 
29

您可以動態地得到一個Class對象與NSClassFromString()

Class c = NSClassFromString(@"ClassName"); 
id obj = [[c alloc] init]; 
+0

毫無疑問,這個社區是最好的。謝謝。這就像一個魅力 – 2010-02-01 09:19:24