美文网首页
NSInvocationOperation简介

NSInvocationOperation简介

作者: 行走的栀子花 | 来源:发表于2016-12-15 16:58 被阅读66次

    简书写的第二篇文章,紧接着上一篇而来,照常将苹果官方文档翻译如下:

    NSInvocationOperation是NSOperation的一个具体的子类,用来管理一个由invocation对象封装的任务的执行操作。你可以利用NSInvocationOperation类来执行一个操作,这个操作由方法和指定的object对象(参数)组成。这个操作是非并发执行的。

    这是一个简单的对任务进行封装的类,是NSOperation的具体的子类,我们可以直接使用。
    初始化的方式又两种,一种是

    NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(doSomething:) object:@"仰望星空的小哥"];```
    第二种
    
    NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc]initWithInvocation:invocation];```
    

    感觉和NSBlockOperation的功能也没多少差别,不知道苹果为什么要弄出这么一个方便使用的类出来,如果有人知道请留言告诉我,非常感谢。

    NSInvocationOperation使用方法如下:

    - (IBAction)doInvocationOperationAction:(id)sender{
        //创建一个NSInvocationOperation对象
        NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(doSomething:) object:@"仰望星空的小哥"];
        [invocationOperation start];
        NSString *result = [invocationOperation result];
        NSLog(@"result:%@",result);
    }```
    
    第二种方式
    
    • (IBAction)doInvocationOperationAction2:(id)sender{
      //利用invocation创建invocationOperation
      NSMethodSignature *signature = [[self class] instanceMethodSignatureForSelector:@selector(doSomething:)];

      //创建invocation
      NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
      invocation.target = self;
      invocation.selector = @selector(doSomething:);
      NSString *para = @"仰望星空的小哥2";
      [invocation setArgument:&para atIndex:2];

      NSInvocationOperation *invocationOperation = [[NSInvocationOperation alloc]initWithInvocation:invocation];
      [invocationOperation start];
      NSString *result = [invocationOperation result];
      NSLog(@"result:%@",result);
      }

    • (NSString *)doSomething:(NSString *)name{
      NSLog(@"name:%@, %@",name, [NSThread currentThread]);
      return [name stringByAppendingString:@"好棒"];
      }```

    相关文章

      网友评论

          本文标题:NSInvocationOperation简介

          本文链接:https://www.haomeiwen.com/subject/bpdgmttx.html