NSOperation

一 基本使用

  • 相关概念

  • NSOPeration是对GCD的包装

  • 两个核心概念 [队列+操作]

  • 基本使用

    • NSOperation本身是抽象类,只能有它的子类arget:
    • 三个子类分别是:NSBlockOperation 和 NSInvocationOperation 以及自定义继承NSOperation的类
    • NSOPeration和NSOperationQueue结合使用实现多线程并发
  • 相关代码

1 NSInvocationOperation

 //封装操作
 第一个参数:目标对象
 第二个参数:该操作要调用的方法,最多接受一个参数
 第三个参数:调用方法传递的参数,如果方法不接受参数,那么就写nil

    NSInvocationOperation *operation = [[NSInvocarionOperation alloc]initWithTarget:self selector @(run) object :nil];
    //启动操作
    [operation start];

2 NSBlockOperation

1.封装操作
//NSBlockOperation提供了一个类方法,在该类方法中封装操作
NSBlockOperation *operation = [NSBlockOPeration blickOperationWithBliock:^{
   //在主程中执行
  NSLog(@"-----download1---%@",[NSThread currentThread]);
    }];

2.追加操作,追加的操作在子线程中执行

[operation addExecutionBlock:6{
NSLog(@"-----dowload2----%@",[NSThread     currentThread])
}];
[operation addExecutionBlock:^{
NSLog (@"---download3---%@",[NSThread currentThread]);
}];
3.启动执行操作

 [operation start];
  1. 自定义NSOperation]

     自定义的NSOperation,通过重写内部的main方法实现封装操作
     -(viod)main
     {
             NSLog (@"---main---%@",[NSThread   currenThread);
     }
     //实例化一个自定义操作对象
     WWKOperation *op = [[WWKOperation alloc]init];
     //执行操作
     [op start];
    

你可能感兴趣的:(NSOperation)