Подтвердить что ты не робот

Метод вызова Objective C динамически с помощью строки

Мне просто интересно, есть ли способ вызвать метод, когда я строю имя метода "на лету" со строкой.

например. У меня есть метод loaddata​​p >

-(void)loadData;

чтобы назвать это, я обычно называю это как

[self loadData];

Но я хочу иметь возможность динамически вызывать его с помощью строки, например.

NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];

Это глупый пример, но я надеюсь, что вы поймете мою мысль. Я использую его для классов привязки данных, которые я настраиваю для своего приложения IPad. Трудно объяснить, но чтобы его запустить, мне нужно выяснить, как вызвать метод со строкой.

Любые идеи?

Спасибо

4b9b3361

Ответ 1

Вы можете попробовать что-то вроде

SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];

Ответ 2

Вы можете использовать функцию objc_msgSend. Для его отправки требуется два параметра: приемник и селектор:

objc_msgSend(self, someSelector);

Вам нужно будет превратить строку в соответствующий селектор с помощью NSSelectorFromString:

NSString *message = [self getSomeSelectorName];
objc_msgSend(self, message);

Метод также принимает переменное количество аргументов, поэтому вы можете отправлять сообщения с любым количеством аргументов.

NSString *message = [self getSomeSelectorNameWithManyArguments];
objc_msgSend(self, message, arg1, arg2, arg3, arg4);