dub*_*eat 29 cocoa-touch nsoperation grand-central-dispatch ios
哪些任务更适合使用NSOperation,而不是GCD在为iPhone编程时使用?
对我来说,他们似乎做同样的事情.我看不出一方面的优势和劣势.
Yuj*_*uji 25
NSOperation是建立在GCD之上的,所以问题更多的是关于是否使用NSOperation或直接将块传递给GCD.
一个NSOperation是体积大,需要更多的样板代码来设置它,但它有很多更多的功能.您可以NSOperation在代码的各个部分中创建相同的子类,并将它们放入队列并运行它.
通过例如将块传递给GCD dispatch_async是快速且一次性的.您通常不会在其他地方重复使用块; 您只需设置一个块,该块仅在代码的该点执行,将其传递给GCD或其他API,然后快速继续.
所以每个都有它的优点.
sca*_*aba 13
显然,NSOperationQueue是基于iOS 4的GCD构建的; 文档尚未更新.请在这里查看Apple员工的这篇帖子:https://devforums.apple.com/message/352770(您可能需要创建一个帐户)因此,您应该遵循Mike Abdullah的建议并使用最简单的API来完成手头的任务.dispatch_async是较低级别,通常是C类型的东西(但不限于此),适用于单次和顺序类型的交易(在此队列中触发此块,FTW).NSOperationQueues是更高级别的Objective-C,如果您在代码中的各个点添加大量操作,并且/或者需要管理并发性,优先级和依赖性,那么它们是很好的.至少我是如何使用它们的.
与往常一样,使用最简单的API.测量是否存在性能问题,然后根据需要重新评估.