2014-12-30 39 views
-2

我想要得到的東西,如:如何按名稱創建objective-c類的實例?

#define weaken(object) ... 

---- 

ClassABCD * abcd = [ClassABCD new]; 
weaken(abcd); 
weakAbcd.tag = 0; 

---- 

下面我有一些代碼:

#define weaken(x) __weak typeof(x) weak##x = x 

但只能用 「weakabcd」,而不是 「weakAbcd」。任何想法爲什麼,以及如何解決它?

+0

你想通過傳遞一個字符串來創建某個類的實例嗎?這就是爲什麼我從主題行 – Chris

+0

我試過,但failed..So我來這裏問 –

+0

我不知道你是否可以做你想做的(即大寫首字母的宏用前綴之前解釋'weak'),但你總是可以考慮一個不同的實現,'weakify'宏:http://stackoverflow.com/a/27280374/1271826 – Rob

回答

0

基於該問題的標題,NSClassFromString()將做到這一點。根據你提供的代碼,我不太確定這兩場比賽。

這是從我的項目中,我根據我在其他位置定義字符串變量prefCellClassName創建一個UITableViewCell子類的實例之一線。 (爲了完整,prefCellStyle和prefCellReuseIdentifier也是我在其他位置定義的變量。)

 cell = [[NSClassFromString(prefCellClassName) alloc] initWithStyle:prefCellStyle reuseIdentifier:prefCellReuseIdentifier]; 
0

從字符串使一個類:

id someObject = NSClassFromString("MyClassName"); 

當你做這樣的事情,這是一件好事檢查如果你的對象響應方法你想通過它,像這樣:

if ([someObject respondsToSelector:@selector(someMethod)]) 
{ 
    [someObject someMethod]; 
} 

它的功能,這樣,使Objective-C的動態語言,這是

相關問題