被调用的方法
//需要调用的方法 - (NSNumber*)getCountWithNum1:(int)num1 num2:(NSNumber*)num2 { int num2_int = [num2 intValue]; return [NSNumber numberWithInt:num1+num2_int]; }
使用方式
//参数及返回值 int num1 = 30; NSNumber *num2 = [NSNumber numberWithInt:12]; NSNumber *result = nil; SEL selector = @selector(getCountWithNum1:num2:); //对类中的方法进行签名 NSMethodSignature *ms = [[self class] instanceMethodSignatureForSelector:selector]; //根据方法签名创建一个NSInvocation NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:ms]; invocation.target = self; invocation.selector = selector; //如果此消息有参数需要传入,那么就需要按照如下方法进行参数设置,需要注意的是,atIndex的下标必须从2开始。原因为:0 1 两个参数已经被target 和selector占用 [invocation setArgument:&num1 atIndex:2]; [invocation setArgument:&num2 atIndex:3]; [invocation retainArguments]; [invocation invoke]; [invocation getReturnValue:&result]; NSLog(@"%@", result);