【发布时间】:2012-07-25 11:20:16
【问题描述】:
感谢斯坦福大学的 CS193p 课程(在 iTunes U 上)以及 Big Nerd Ranch 的 iOS 编程书籍,我学会了 iOS 编程。在这两者中,他们建议使用dispatch_async()、dispatch_get_main_queue() 等来处理线程和并发操作。然而,在 WWDC 2012 关于构建并发 UI 的会议上,演讲者建议使用NSOperationQueue。
dispatch_*() 和 NSOperationQueue 之间有什么区别,是否有任何理由(技术、性能、风格或其他)我应该使用其中一个? NSOperationQueue 只是 dispatch_async 的一个 Objective-C 包装器,还是还有更多?
【问题讨论】:
-
glasz 的回答几乎涵盖了所有内容,但我必须指出谁选择使用什么。如果你想在作用域内异步执行某些事情,你可以使用(块启用)gcd。但是,如果您有一个定义非常明确的任务,那么它是可重用和重复的,并且可以超出类的范围以同时执行它(和类似的任务)。您将创建
NSOperations,您可以在其中正确管理特定于该任务的功能。这既可扩展又美观。
标签: grand-central-dispatch nsoperationqueue