[第2章]多线程:NSOperation的简单使用

一、介绍

特点

  1. 在GCD基础上实现
  2. 更好地控制和处理大量并发操作
  3. 比GCD速度稍慢

1、NSOperation

NSOperation是抽象类,使用方法:
1、使用系统提供的子类;
2、自定义类。
这里写图片描述

依赖关系:
这里写图片描述

键值对象:
这里写图片描述

2、NSOperationQueue

NSOperationQueue,用于调度和管理NSOperation。
这里写图片描述

二、使用系统类

(并行)NSBlockOperation

这里写图片描述

代码

// 1、operation1和operation2
let operation1 = NSBlockOperation {
    sleep(1)
    NSLog("operation1: 1")
}

let operation2 = NSBlockOperation {
    sleep(2)
    NSLog("operation2: 1")
}


// 1、在operation2中额外添件一个block(NSOperation类似dispatch_group)
operation2.addExecutionBlock {
    sleep(2)
    NSLog("operation2: 2")
}

// 2、添加依赖关系,和执行完operation2之后的操作(类似dispatch_group_notify)
operation2.addDependency(operation1)
operation2.completionBlock = {
    NSLog("operation2: OK")
}

// 3、创建一个队列,并添加operation到队列中。
let queue = NSOperationQueue()
queue.addOperation(operation1)
queue.addOperation(operation2)

//--------------------------其他------------------------//
// 手动禁止(或允许)新的operation加入队列。
queue.suspended = true
queue.suspended = false

// 设置最大并行运行数:
queue.maxConcurrentOperationCount = 2

结果

operation1执行完,才到operation2,并行执行。
这里写图片描述

附录

NSInvocationOperation在swift中不能用
这里写图片描述

自定义类
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值