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

Использовать performSelector с тремя или более аргументами?

Различные методы performSelector:... могут обрабатывать максимум два аргумента, переданных указанному селектору. Что делать, если мне нужно передать три или более аргумента?

4b9b3361

Ответ 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);