Определить подпись селектора - PullRequest
5 голосов
/ 06 октября 2010

Как проверить подпись селектора или требует ли селектор параметров или нет?

Например, я хочу проверить, имеет ли селектор тип
-(void) method
или
-(void) method:(id)param

Ответы [ 2 ]

8 голосов
/ 06 октября 2010

Вы можете получить много информации о конкретном селекторе с помощью класса NSMethodSignature:

id obj = ...
SEL selector = ...

NSMethodSignature *signature = [obj methodSignatureForSelector:selector];
NSUInteger args = [signature numberOfArguments];
int i;
for(i = 0; i < args; i++)
   printf("argument type at index %d: %c", i, [signature getArgumentTypeAtIndex:i]);
0 голосов
/ 06 октября 2010

Вы можете проверить это, используя respondsToSelector:, то есть что-то вроде этого:

if ( [myObject respondsToSelector:@selector(doSomethingWithOneArgument:)] ){
    ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...