Swift-NSOPeration 和 NSOPrationQueue

NSOPeration 和 NSOPrationQueue

NSOPeration 通过 start 方法 同步执行任务

通常 NSOPearation 要和 NSOPrationQueue 配合使用, 把NSOPration 加入到 NSOPrationQueue 中, queue 自动异步执行 NSOPration

和 GCD 相比 NSOPration 的优点,

  1. 可以取消任务.
  2. 设置最大并发数

diapatch queue 中的block 会按照 FIFO 顺序去执行
而, NSOPrationQueue 根据 Operation 的状态(是否 ready)以及优先级来确定执行的 NSOperation 顺序

  1. 暂停 跟 继续

  2. 队列优先级
    UserInteractive: 任务跟界面的一些UI相关,比如绘制屏幕内容跟处理点击事件等,处于最高优先级的任务

    UserInitiated : 用户一些请求的任务,关系到后面的交互,比如用户点击消息按钮后获取邮件列表的任务

    Utility: 处理一些用户并不立即需要结果的任务,比如定期的内容更新之类的任务

    Background:后台任务,用户不会察觉到这些任务,比如后台对文件进行索引方便后续搜索,优先级最低;

    Default: 默认值,介于UserInitiated跟Utility之间

NSOperation
- concurrent (并发任务)
使用 start 方法, start 方法执行完之后 要根据任务的 finish状态来移除任务.
- non-concurrent (非并发任务) 可以执行异步操作
使用 main 方法, main 方法执行完之后 任务就会被移除 不能执行异步操作
简单的任务可以使用 类 NSInvocationOperation 和 NSBlockOperation(都继承于 NSOperation)

你可能感兴趣的:(Swift-NSOPeration 和 NSOPrationQueue)