NSOperation

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //创建队列
        let queue = OperationQueue()

        //设置最大并发数
        queue.maxConcurrentOperationCount = 2

        //创建operation
        let  operation = BlockOperation {() -> Void in

            print("创建一个operation")
        }

        //当operation有多个任务的时候会自动分配多个线程并发执行,
        //如果只有一个任务,会自动在主线程同步执行
        //operation.start()

        operation.addExecutionBlock({() -> Void in

            print("添加任务一")
        })

        operation.addExecutionBlock({() -> Void in

            print("添加任务二")
        })

        //创建另一个operation
        let operation2 = BlockOperation{() -> Void in

            print("创建另一个operation")

            //NSOperation操作监听,一个操作完成后调用另一个操作:
            self.operationCompletion()
        }

        //等operation执行完再执行operation2
        operation2.addDependency(operation)

        //添加到队列中的operation将自动异步执行
        queue.addOperation(operation)
        queue.addOperation(operation2)

        //还有一种方式,直接将operation的blcok直接加入到队列
        queue.addOperation { () -> Void in

            print("添加任务1")
        }
        queue.addOperation { () -> Void in

            print("添加任务2")
        }
        queue.addOperation { () -> Void in

            print("添加任务3")
        }
        queue.addOperation { () -> Void in

            print("添加任务4")
        }

    }

    func operationCompletion(){
        //创建队列
        let queue = OperationQueue()
        let operation = BlockOperation { () -> Void in
            print("print A")
        }
        operation.completionBlock = doSomething
        queue.addOperation(operation)
    }
    func doSomething(){
        print("doSomething")

        //创建队列
        let queue = OperationQueue()
        queue.addOperation { () -> Void in
            print("子线程中执行任务")
            OperationQueue.main.addOperation({ () -> Void in
                print("主线程刷新UI")
            })
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

总结:NSOperation解决了NSThread中需要我们手动管理线程等繁琐操作,我们只需将执行事件托付到线程中,不需要对线程进行上锁和解锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值