ios NSInvocation基本使用
-
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
-
-
// performSelector 只能 根据方法名调用 2个参数
-
// 传递一个参数例子
-
[self performSelector:@selector(callWithNumber:andContent:) withObject:@"110"];
-
// 传递二个参数例子
-
[self performSelector:@selector(callWithNumber:andContent:) withObject:@"110" withObject:@"吃放了"];
-
-
// [self invocation];
-
-
-
}
-
-
-(void)invocation
-
{
-
//1.创建签名:方法名称|参数|返回|谁拥有它,和方法的调用没有关系
-
NSMethodSignature *signature = [ViewController instanceMethodSignatureForSelector:@selector(callWithNumber:andContent:withStatus:)];
-
-
-
//创建NSInvocation
-
/*
-
*/
-
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
-
invocation.target = self;
-
invocation.selector = @selector(callWithNumber:andContent:withStatus:);
-
-
NSString *number = @"15376321";
-
NSString *content = @"11222";
-
NSString *status = @"睡觉";
-
//self and _cmd 0-1已经被占用了,已经被方法占用了
-
[invocation setArgument:&number atIndex:2];
-
[invocation setArgument:&content atIndex:3];
-
[invocation setArgument:&status atIndex:4];
-
-
[invocation invoke];
-
// return invocation;
-
-
}
-
-
-
-(NSString *)call
-
{
-
NSLog(@"call--");
-
return @"wre";
-
}
-
-
-(void)callWithNumber:(NSString *)number
-
{
-
NSLog(@"call--%@",number);
-
}
-
-
-(void)callWithNumber:(NSString *)number andContent:(NSString *)content
-
{
-
NSLog(@"call--%@--%@",number,content);
-
}
-
-
-(void)callWithNumber:(NSString *)number andContent:(NSString *)content withStatus:(NSString *)status
-
{
-
NSLog(@"call--%@--%@---%@",number,content,status);
-
}

浙公网安备 33010602011771号