swift 的Operation

2017-10-17  本文已影响11人  FengxinLi

学习 原文链接 http://www.jianshu.com/p/443a18031366

override func viewDidLoad() {

super.viewDidLoad()

basicOperation() //basicOperation() 25 {number = 3, name = (null)}

createBasicBloclQueue() //createBasicBloclQueue() 33 {number = 1, name = main

}

private func  basicOperation(){

let op = Operation.init()

op.completionBlock = {

print(#function,#line,Thread.current)

}

let opQueue = OperationQueue.init()

opQueue .addOperation(op)

}

private  func createBasicBloclQueue(){

let operation = BlockOperation.init {

print(#function,#line,Thread.current)

}

operation.start();

}

运行结果我已经写在后面了

创建完Operation如果直接运行,就会在当前线程执行。也就是说,如果实在主线程创建并且start的,那就会在主线程执行;如果是在子线程创建并且start的,那就会在子线程执行。

Operation中表示优先级的属性是queuePriority,表示操作在队列中的优先级。

extension Operation {

public enum QueuePriority : Int {

case veryLow

case low

case normal

case high

case veryHigh

}

}

这些优先级都是相对的,并不是是说必须要执行完最高的才执行次重要的。这里面并没有一个特别严格顺序。只是在分配资源上有倾向性。如果队列需要有严格的执行顺序,还是要添加依赖关系的

OperationQueue的优先级qualityOfService 

public enum QualityOfService : Int {

case userInteractive

case userInitiated

case utility

case background

case `default`

}

上一篇 下一篇

猜你喜欢

热点阅读