2012-02-04 53 views
2

我有幾種方法,如以下:動態方法名(目標C)

- (void)methodA; 
- (void)methodB; 
- (void)methodC; 

並且它們依賴於某些條件下使用。

現在我要動態地使用他們,我想這:

NSString *methodName; 
if(_flag == A) methodName = @"methodA"; 
else if (_flag == b) methodName = @"methodB"; 
else methodName = @"methodC"; 

[self performSelector:@selector(methodName)]; 

但它似乎是錯誤的。

那麼應該如何根據不同情況爲給定的接收器使用動態方法名稱?

非常感謝!

回答

5

使用這個代替:

[self performSelector:NSSelectorFromString(methodName)] 
+0

Thansk很多!這就是我想要的。 – 2012-02-04 06:02:41

2

你爲什麼不這樣做?

if(_flag == A) 
    [self performSelector:@selector(methodA)]; 
else if (_flag == b) 
    [self performSelector:@selector(methodB)]; 
else 
    [self performSelector:@selector(methodC)]; 

由於@selector需求函數調用,而不是NSString

+0

謝謝關心!因爲我正在整合我的代碼,所以真實情況要複雜得多,我正在盡力減少其他句子。但是謝謝你的幫助! – 2012-02-04 06:04:02