代码改变世界

iOS 控制任务执行顺序

2018-05-07 13:00  dengchaojie_learner  阅读(474)  评论(0编辑  收藏  举报

iOS 控制任务执行顺序,需求:
有两个任务都要放在子线程中执行, 且要保证A执行完再执行B.
如果你也有同样的需求, 可以从下面几种方法中挑选一种


实现方法
1.1. 方法一 使用GCD串行队列. 

1.2 方法二 使用barrier.

1.3 方法三 使用NSOperation
在这之前简单介绍一下 NSOperation
* NSOperation 是对GCD的封装.
* NSOperation 是一个抽象类, 不能封装任务, 需要他的两个子类完成 NSInvocationOperation 和 NSBlockOperation
* 需要调用start 方法开启, 默认是同步执行,也就是说默认不会开线程, 也可以使用 cancel 方法取消, 但是只能取消未开始的任务,已经开始的任务,无法被取消.
* 在NSOperation 添加到queue后, 通常会在很短的时间内得到运行, 但是如果Operation有添加依赖或者queue 被设置成等待, 那可能需要等待.

1.4 方法四, 既然NSOperation是对GCD的封装,那么联想方法一, 我想能不能将NSOperationQueue也设置成串行队列.

https://www.2cto.com/kf/201707/659390.html