Ответ 1
Вы можете попробовать что-то вроде
SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];
Мне просто интересно, есть ли способ вызвать метод, когда я строю имя метода "на лету" со строкой.
например. У меня есть метод loaddatap >
-(void)loadData;
чтобы назвать это, я обычно называю это как
[self loadData];
Но я хочу иметь возможность динамически вызывать его с помощью строки, например.
NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];
Это глупый пример, но я надеюсь, что вы поймете мою мысль. Я использую его для классов привязки данных, которые я настраиваю для своего приложения IPad. Трудно объяснить, но чтобы его запустить, мне нужно выяснить, как вызвать метод со строкой.
Любые идеи?
Спасибо
Вы можете попробовать что-то вроде
SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];
Вы можете использовать функцию 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);
Вам нужно NSSelectorFromString
.