NSO操作
服务的优先级和质量
优先级(NSOperation.queuePriority)与枚举一样,具有以下选项:
- 。非常低
- 。低
- 。正常
- 。高
- 。很高
服务质量(NSOperation.qualityOfService)具有以下选项:
- 。效用
- .UserInteractive
- 。用户启动
- 。默认。
- 。背景
优先级和服务质量越低,与其他任务相比,任务将在队列中移得越远。
依存关系
let operationOne:NSOperation =…
let operationTwo:NSOperation =…
operationTwo.addDependency(operationOne)
让operationQueue = NSOperationQueue.mainQueue()
operationQueue.addOperation([operationOne,operationTwo],waitUntilFinished:false)
在这种情况下,operationTwo依赖于operationOne,因此operationTwo必须在operationOne完成之前才能运行。 确保不要使operationOne依赖于operationTwo和operationTwo依赖于operationOne,否则将产生死锁。
完成区块
NSOperation完成后,它将运行一次其完成块。
let操作= NSOperation()
operation.completionBlock = {
打印(“完成!”)
}
NSOperationQueue.mainQueue()。addOperation(操作)
NSBlockOperation
块操作类似于操作,但是可以将任务放在块中,而不是将操作子类化。
这会将operation2添加到队列中,然后将operation1添加到队列中。 它将首先执行operation2的块,然后执行operation1的块。
GCD与NSO
使用GCD的好时机:
- 一次计算
- 加快现有方法
- 需要轻巧的东西
使用NSOperation的好时机:
- 需要取消并了解其运行状态
- 需要安排一组依赖项
同时使用GCD和NSOperation可以使您的应用程序非常时尚。
在Twitter @anthonyprograms上关注我,并查看iOS纪事以获取更多文章。