ios - OperationQueue.main 与 DispatchQueue.main

标签 ios swift grand-central-dispatch nsoperationqueue ui-thread

当您需要在网络任务或操作的完成 block 中的主线程上执行某些操作时,以下哪种方法最合适,为什么?:

  • OperationQueue.main.addOperation
  • DispatchQueue.main.async

最佳答案

关于两种队列的区别,详见Lion的回答。

这两种方法都有效。然而,当需要更高级的调度(包括依赖取消等)时,最需要NSOperation。所以在这种情况下,一个简单的

DispatchQueue.main.async { /* do work */ }

会很好的。那相当于

dispatch_async(dispatch_get_main_queue(), ^{ /* do work */ });

在 Objective-C 中,这也是我在该语言中的做法。

关于ios - OperationQueue.main 与 DispatchQueue.main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40764140/

相关文章:

ios - 如何根据 TextField 的可见大小限制 UITextField 的输入文本量?

ios - PDF CMap : Single Glyph to Multiple-Characters Mapping

iOS - pushViewController 与 presentModalViewController 的区别

ios - 在 cellForRowAtIndexPath 之后 Swift 调用prepareForSegue

swift - 使用 Swift 在 SpriteSkit 中获得正确的大小?

swift - 将数据上传到 Firebase 的后台线程

ios - UIScrollView 中的 UILayoutPriority 不影响任何东西

ios - 如果当前 View Controller 被呈现并被推送,如何展开到正确的 View Controller ?

ios - 如何在 dispatch_after_seconds 完成后调用方法?

ios - 使用 NSURLConnection 和 dispatch_async 时的内存永远不会被释放