NSOperation 简单使用


//NSOperation 简单使用

self.myQueue = [[NSOperationQueue alloc] init];

- (void)demo
{
    NSBlockOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"下载 %@", [NSThread currentThread]);
    }];
    NSBlockOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"修改 %@", [NSThread currentThread]);
    }];
    NSBlockOperation *op3 = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"保存 %@", [NSThread currentThread]);
    }];
    NSBlockOperation *op4 = [NSBlockOperation blockOperationWithBlock:^{
        NSLog(@"更新UI %@", [NSThread currentThread]);
    }];
    
    // 设定执行顺序, Dependency依赖,可能会开多个,但不会太多
    // 依赖关系是可以跨队列的!
    [op2 addDependency:op1];
    [op3 addDependency:op2];
    [op4 addDependency:op3];
    // GCD是串行队列,异步任务,只会开一个线程
    
    [self.myQueue addOperation:op1];
    [self.myQueue addOperation:op2];
    [self.myQueue addOperation:op3];
    // 所有UI的更新需要在主线程上进行
    [[NSOperationQueue mainQueue] addOperation:op4];
    
    // 同时运行两个线程
<pre name="code" class="objc">    // 例如:
// 如果是3G,开3个子线程 // 如果是WIFI,开6个子线程// self.myQueue.maxConcurrentOperationCount = 2; [self.myQueue addOperationWithBlock:^{ NSLog(@"%@ %d", [NSThread currentThread], i); }];}






    // 如果是3G,开3个子线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值