Различные методы performSelector:...
могут обрабатывать максимум два аргумента, переданных указанному селектору. Что делать, если мне нужно передать три или более аргумента?
Использовать performSelector с тремя или более аргументами?
Ответ 1
Для этого вам нужно использовать класс NSInvocation. Проверьте этот вопрос SO для получения более подробной информации об их использовании.
Ответ 2
Мне не нравится путь NSInvocation, ему нужно слишком много кода.
Если вам нравится выполнять селектор сразу, вот простой и чистый способ:
// Assume we have these variables
id target, SEL aSelector, id parameter1, id parameter2;
// Get the method IMP, method is a function pointer here.
id (*method)(id, SEL, id, id) = (void *)[vc methodForSelector:aSelector];
// IMP is just a C function, so we can call it directly.
id returnValue = method(vc, aSelector, parameter1, parameter2);