В последнее время я написал приложение на Java (для Android), которое использовало отражение для вызова методов некоторых объектов. Номер и тип аргумента были неизвестны, то есть у меня был единый механизм, который получал имя объекта, имя метода и массив параметров (используя JSON) и вызывал указанный метод для указанного объекта с массивом аргументов (Object [] заполнены аргументами обязательных типов).
Теперь мне нужно реализовать то же самое для iOS, я смог вызвать селектор, когда я знал число параметров, для которых селектор ожидал, вот так:
SEL selector = NSSelectorFromString(@"FooWithOneArg");
[view performSelectorInBackground:selector withObject:someArg];
Я знаю, что могу получить количество аргументов, которые получает селектор, используя
int numberOfArguments = method_getNumberOfArguments(selector);
Но есть ли способ сделать общий вызов, подобный этому:
[someObject performSelector:selector withObject:arrayOfObjects]
, который в значительной степени эквивалентен Java
someMethod.invoke(someObject, argumentsArray[]);
Я хочу избежать случая переключения в соответствии с количеством аргументов, которые получает селектор.
Извините за длинное копание, я просто хочу, чтобы мой вопрос был максимально ясным.