Динамическое имя метода (Objective-C) - PullRequest
2 голосов
/ 04 февраля 2012

У меня есть несколько методов, как показано ниже:

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

5 голосов
/ 04 февраля 2012

Используйте это вместо:

[self performSelector:NSSelectorFromString(methodName)]
2 голосов
/ 04 февраля 2012

почему бы вам не поступить таким образом ??

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

Поскольку @selector нужна функция для вызова, а не NSString.

...