iOS-nsoperration的简单操作

来源:互联网 发布:玲珑网游加速器mac 编辑:程序博客网 时间:2024/04/19 06:57
////  ViewController.m//  01-nsoperration////  Created by panba on 16-10-16.//  Copyright (c) 2016年 panba. All rights reserved.//#import "ViewController.h"@interface ViewController ()            @end@implementation ViewController            - (void)viewDidLoad {    [super viewDidLoad];//    [self blockOperation];//    [self oprationqueue];    [self operationListen];}-(void)operationListen{    NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{        NSLog(@"-----block---%@",[NSThread currentThread]);    }];    blockOperation.completionBlock = ^{        NSLog(@"-----block完成---%@",[NSThread currentThread]);        //操作执行完之后的操作    };    NSOperationQueue *queue = [[NSOperationQueue alloc]init];    [queue addOperation:blockOperation];    }-(void)oprationqueue{    //1-添加事件    NSInvocationOperation *operation1 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download) object:nil];    //队列中线程的优先级    operation1.queuePriority = NSOperationQueuePriorityVeryHigh;        NSInvocationOperation *operation2 = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(run) object:nil];    NSBlockOperation *blockoperation = [NSBlockOperation blockOperationWithBlock:^{        NSLog(@"-----block---%@",[NSThread currentThread]);    }];    [blockoperation addExecutionBlock:^{        NSLog(@"-----block2---%@",[NSThread currentThread]);    }];        //添加操作依赖  , 不同到队中队操作可以依赖    [operation2 addDependency:blockoperation];    [blockoperation addDependency:operation1];  //只有执行完操作1之后,才能执行操作2        //2-添加队列    NSOperationQueue *operationqueue = [[NSOperationQueue alloc]init];    //最大并发数    operationqueue.maxConcurrentOperationCount = 1;   //一般在5以内 在2-3为宜        //添加操作到队列中,自动执行操作,自动开启线程    [operationqueue addOperation:operation1];    [operationqueue addOperation:operation2];    [operationqueue addOperation:blockoperation];        //暂停和恢复队列//    [operationqueue setSuspended:YES];  //yes 暂停队列 no 恢复队列    }-(void)blockOperation{//    NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{//         NSLog(@"-------download---%@",[NSThread currentThread]);//    }];    NSBlockOperation *blockoperation = [[NSBlockOperation alloc]init];        [blockoperation addExecutionBlock:^{        NSLog(@"-------download-1---%@",[NSThread currentThread]);    }];        [blockoperation addExecutionBlock:^{        NSLog(@"-------download-2---%@",[NSThread currentThread]);    }];        [blockoperation addExecutionBlock:^{        NSLog(@"-------download-3---%@",[NSThread currentThread]);    }];            [blockoperation start];}-(void)invocationoperation{    NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(download) object:nil];    [operation start];}-(void)download{    NSLog(@"-------download---%@",[NSThread currentThread]);}-(void)run{    NSLog(@"-------run---%@",[NSThread currentThread]);}@end

0 0
原创粉丝点击