Использовать executeSelector с тремя или более аргументами? - PullRequest
14 голосов
/ 05 октября 2011

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

Ответы [ 2 ]

14 голосов
/ 05 октября 2011

Для этого вам нужно использовать класс NSInvocation.Проверьте этот SO вопрос для более подробной информации об их использовании.

0 голосов
/ 31 октября 2016

Мне не нравится способ 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);
...