NSOperationQueue应用

NSOperation
通常直接使用NSOperation子类:NSInvocationOperation、NSBlockOperation
NSOperation 创建同步与异步操作

    //初始化一个操作,若像方式一直接调用start方法,为同步操作。即download方法会在主线程中执行.
    //方式二将操作添加到队列中为异步操作
    //方式一
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(downloadImage) object:nil];
    [operation start];
    //操作完成回调
    [operation setCompletionBlock:^{
        //更新UI
    }];
    //方式二
    NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:^{
        [self downloadImage];
    }];
    //设置优先级(实际工作中建议不设置优先级)
    blockOperation.queuePriority = NSOperationQueuePriorityHigh;
    //操作完成回调
    [operation setCompletionBlock:^{
        //获取主线程
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            //更新UI
        }];
    }];
    //创建操作队列
    NSOperationQueue *operationQueue=[[NSOperationQueue alloc]init];
    operationQueue.maxConcurrentOperationCount=5;//设置最大并发线程数
    [operation addDependency:blockOperation]; //设置依赖
    //直接使用操队列添加操作
    [operationQueue addOperation:blockOperation];
    [operationQueue addOperation:operation];
    [operationQueue cancelAllOperations];//取消队列所有操作

NSOperationQueue 创建异步操作

    NSOperationQueue *operationQueue=[[NSOperationQueue alloc]init];
    operationQueue.name = @"queue";
    //将一个任务添加到队列
    [operationQueue addOperationWithBlock:^{
        //任务完成
        //获取主线程
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            //更新UI
        }];
    }];

NSOperationQueue相关属性与方法
[operationQueue currentQueue];//获取当前队列
- (void)waitUntilAllOperationsAreFinished; //阻塞当前线程等待队列所有操作完成
[operationQueue setSuspended:YES];//队列挂起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值