大家得以经过安装重视关系,所依靠的兼具 operation 都实施到位时

1. Operation 设置注重关系

先看看哪些设置operation的重视性关系。

啥叫正视关系?有甚用啊?
打个比方我们要做1个听音乐的付费App项目,须要通过登⑥ 、付费、下载、播放多少个步骤。其实一看就了然,那八个操作是有先后顺序的,但只要全数的操作都以四线程,大家怎么决定顺序?
透过安装“优先级”?NO!优先级没有艺术干这一个事情。(也便是操作系统中的同步)

 

咱俩得以通过安装依赖关系,建立初步后的一一。唯有当二个 operation
所正视的具备 operation 都实行到位时,那个 operation 才能起初举行。

同时,operation是能够跨队列建立依赖关系的啊!

 

急需小小注意的是,要先将operation的借助关系创造好之后再添加到队列中。

 

代码很不难,请看:

图片 1图片 2

 1 fileprivate func startDepencyDemo() {
 2    operationQueue.maxConcurrentOperationCount = 4
 3     self.activityIndicator.startAnimating()
 4     guard let url = URL(string: "https://placebeard.it/355/140") else {return }
 5     let op1 = convenienceOperation(setImageView: imageView1, withURL: url)
 6     let op2 = convenienceOperation(setImageView: imageView2, withURL: url)
 7     op2.addDependency(op1)
 8     let op3 = convenienceOperation(setImageView: imageView3, withURL: url)
 9     op3.addDependency(op2)
10     let op4 = convenienceOperation(setImageView: imageView4, withURL: url)
11     op4.addDependency(op3)
12     
13     DispatchQueue.global().async {
14         [weak self] in
15         self?.operationQueue.addOperations([op1,op2,op3,op4], waitUntilFinished: true)
16         DispatchQueue.main.async {
17             self?.activityIndicator.stopAnimating()
18         }
19     }
20    
21 }

View Code

 

1. Operation 设置信赖关系

先看看哪些设置operation的依赖关系。

啥叫注重关系?有甚用啊?
打个要是我们要做3个听音乐的付费App项目,须要通过登六 、付费、下载、播放多个步骤。其实一看就精晓,那三个操作是有先后顺序的,但假诺全部的操作皆以二十十二线程,大家怎么控制顺序?
因此安装“优先级”?NO!优先级没有办法干这一个事情。(也便是操作系统中的同步)

 

大家得以经过安装依赖关系,建立初步后的逐条。唯有当一个 operation
所注重的兼具 operation 都实行到位时,那些 operation 才能开始进行。

与此同时,operation是能够跨队列建立信赖关系的啊!

 

亟待小小注意的是,要先将operation的正视性关系创制好之后再添加到队列中。

 

代码很简单,请看:

图片 3图片 4

 1 fileprivate func startDepencyDemo() {
 2    operationQueue.maxConcurrentOperationCount = 4
 3     self.activityIndicator.startAnimating()
 4     guard let url = URL(string: "https://placebeard.it/355/140") else {return }
 5     let op1 = convenienceOperation(setImageView: imageView1, withURL: url)
 6     let op2 = convenienceOperation(setImageView: imageView2, withURL: url)
 7     op2.addDependency(op1)
 8     let op3 = convenienceOperation(setImageView: imageView3, withURL: url)
 9     op3.addDependency(op2)
10     let op4 = convenienceOperation(setImageView: imageView4, withURL: url)
11     op4.addDependency(op3)
12     
13     DispatchQueue.global().async {
14         [weak self] in
15         self?.operationQueue.addOperations([op1,op2,op3,op4], waitUntilFinished: true)
16         DispatchQueue.main.async {
17             self?.activityIndicator.stopAnimating()
18         }
19     }
20    
21 }

View Code

 

相关文章