Как получить арность метода? - PullRequest
1 голос
/ 26 августа 2010

Например, в Javascript вы можете получить arity (число аргументов, которое должна принимать функция), просто func.length.Как я могу получить эту информацию для метода в Objective-C?

Ответы [ 3 ]

7 голосов
/ 26 августа 2010

NSMethodSignature отлично подходит для всех видов отражающей информации.

SEL selector = @selector(foo:);
NSMethodSignature *sig = [someObj methodSignatureForSelector:selector]
int argCount = [sig numberOfArguments];
2 голосов
/ 23 января 2011

Когда нет объекта-получателя для отправки -methodSignatureForSelector:, можно использовать NSStringFromSelector() и подсчитывать количество вхождений символа двоеточия.

1 голос
/ 26 августа 2010

Из Ссылка времени выполнения Objective C

method_getNumberOfArguments

Возвращает количество аргументов, принятых методом.

unsigned method_getNumberOfArguments (Метод метода) Параметры метода Указатель на структуру данных метода.Передайте метод, о котором идет речь.Возвращаемое значение Целое число, содержащее количество аргументов, принятых данным методом.

...