动态方法名称(Objective-C)

时间:2012-02-04 05:43:55

标签: ios objective-c dynamic selector

我有几种方法,如下所示:

- (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)];

但似乎错了。

那么我应该如何根据不同的情况为给定的接收器使用动态方法名称呢?

非常感谢!

2 个答案:

答案 0 :(得分:5)

请改用:

[self performSelector:NSSelectorFromString(methodName)]

答案 1 :(得分:2)

你为什么不这样做?

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

由于@selector需要调用函数而不是NSString