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纪事以获取更多文章。