<pre name="code" class="objc">//
// ViewController.m
// Invocation
//
// Created by hq on 16/4/19.
// Copyright © 2016年 hanqing. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSMethodSignature *signature=[ViewController instanceMethodSignatureForSelector:@selector(call:num2:)];
if (!signature) {
@throw [NSException exceptionWithName:@"没有该方法啊" reason:@"你确定有这个方法?" userInfo:nil];
//[NSException raise:@"出落喽" format:@"方法找不到啊 %@",NSStringFromSelector(aSelector)];
}
NSInvocation *invocation=[NSInvocation invocationWithMethodSignature:signature];
invocation.target=self;
invocation.selector=@selector(call:num2:);
//设置参数
NSString *number=@"10086";
[invocation setArgument:&number atIndex:2];
NSString *number2=@"10010";
[invocation setArgument:&number2 atIndex:3];
[invocation invoke];
//获取返回值
id returnValue=nil;
if (signature.methodReturnLength) {
[invocation getReturnValue:&returnValue];
NSLog(@"%@",returnValue);
}
}
-(NSString *) call:(NSString *)num num2:(NSString *) num2{
NSLog(@"打电话%@ %@",num,num2);
return @"你好";
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
NSInvocation传递多个参数
最新推荐文章于 2024-09-11 08:07:50 发布