美文网首页
iOS 多线程 NSOperation

iOS 多线程 NSOperation

作者: 孤鹜老五 | 来源:发表于2017-08-25 15:59 被阅读0次

    NSOperation 任务

    NSInvocationOperation、NSBlockOperation是它的子类我们平时只对这两个子类进行操作

    NSInvocationOperation初始化方法:

    NSInvocationOperation* op = [[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(runOP)object:nil];

    [opstart];

    NSBlockOperation初始化方法:

    NSBlockOperation* op1 = [NSBlockOperationblockOperationWithBlock:^{

    NSLog(@"op1 == %@",[NSThreadcurrentThread]);//主线程执行

    }];

    [op1addExecutionBlock:^{

    NSLog(@"op12 == %@",[NSThreadcurrentThread]);//非主线程执行

    }];

    [op1start];

    NSOperationQueue 队列

    NSOperationQueue* queue = [[NSOperationQueuealloc]init];//创建队列 会开启新的线程

    //NSOperationQueue * queue = [NSOperationQueue mainQueue];//创建主线程队列 执行这个队列里的任务不会开启新的线程(addExecutionBlock:^{}]除外)

    queue.maxConcurrentOperationCount=1;//串行

    queue.maxConcurrentOperationCount=-1;//并行

    queue.maxConcurrentOperationCount=2 3 4...;//指定并发数

    [opaddDependency:op1];//依赖关系op1执行完成后才会执行op

    [queue addOperation:op];任务到加入队列中

    [queue addOperation:op1];

    [queue addOperationWithBlock:^{

    NSLog(@"que == %@",[NSThreadcurrentThread]);

    }];

    注意加入队列中的任务不需要start 否则会crash.

    相关文章

      网友评论

          本文标题:iOS 多线程 NSOperation

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