美文网首页
swift 的Operation

swift 的Operation

作者: FengxinLi | 来源:发表于2017-10-17 14:35 被阅读11次

    学习 原文链接 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`

    }

    相关文章

      网友评论

          本文标题:swift 的Operation

          本文链接:https://www.haomeiwen.com/subject/pprduxtx.html