ios NSInvocation基本使用

 

  1.  
    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
  2.  
     
  3.  
    // performSelector 只能 根据方法名调用 2个参数
  4.  
    // 传递一个参数例子
  5.  
    [self performSelector:@selector(callWithNumber:andContent:) withObject:@"110"];
  6.  
    // 传递二个参数例子
  7.  
    [self performSelector:@selector(callWithNumber:andContent:) withObject:@"110" withObject:@"吃放了"];
  8.  
     
  9.  
    // [self invocation];
  10.  
     
  11.  
     
  12.  
    }
  13.  
     
  14.  
    -(void)invocation
  15.  
    {
  16.  
    //1.创建签名:方法名称|参数|返回|谁拥有它,和方法的调用没有关系
  17.  
    NSMethodSignature *signature = [ViewController instanceMethodSignatureForSelector:@selector(callWithNumber:andContent:withStatus:)];
  18.  
     
  19.  
     
  20.  
    //创建NSInvocation
  21.  
    /*
  22.  
    */
  23.  
    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
  24.  
    invocation.target = self;
  25.  
    invocation.selector = @selector(callWithNumber:andContent:withStatus:);
  26.  
     
  27.  
    NSString *number = @"15376321";
  28.  
    NSString *content = @"11222";
  29.  
    NSString *status = @"睡觉";
  30.  
    //self and _cmd 0-1已经被占用了,已经被方法占用了
  31.  
    [invocation setArgument:&number atIndex:2];
  32.  
    [invocation setArgument:&content atIndex:3];
  33.  
    [invocation setArgument:&status atIndex:4];
  34.  
     
  35.  
    [invocation invoke];
  36.  
    // return invocation;
  37.  
     
  38.  
    }
  39.  
     
  40.  
     
  41.  
    -(NSString *)call
  42.  
    {
  43.  
    NSLog(@"call--");
  44.  
    return @"wre";
  45.  
    }
  46.  
     
  47.  
    -(void)callWithNumber:(NSString *)number
  48.  
    {
  49.  
    NSLog(@"call--%@",number);
  50.  
    }
  51.  
     
  52.  
    -(void)callWithNumber:(NSString *)number andContent:(NSString *)content
  53.  
    {
  54.  
    NSLog(@"call--%@--%@",number,content);
  55.  
    }
  56.  
     
  57.  
    -(void)callWithNumber:(NSString *)number andContent:(NSString *)content withStatus:(NSString *)status
  58.  
    {
  59.  
    NSLog(@"call--%@--%@---%@",number,content,status);
  60.  
    }
posted @ 2020-10-15 11:30  sundaysios  阅读(165)  评论(0)    收藏  举报