①:先搞清两者的关系,NSOpertaionQueue是基于GCD的OC封装.
②:GCD仅仅支持先入先出队列,而NSOpertaionQueue中的队列可以设置优先级,调整操作执行顺序.
GCD不能设置异步操作之间的依赖关系.但是使用NSOpertaionQueue就可去设置一个操作依赖另一个操作的数据.
③:NSOperationQueue支持KVO,意味着我们可以观察任务的执行状态。
现在开始回答问题:
性能上:①:GCD更接近底层,而NSOperationQueue是它的高级封装,所以如果我们不需要NSOperationQueue封装的设置并发数,操作执行顺序,操作依赖关系这些功能的话, (我们使用GCD即可,它接近底层当然速度更快,性能更高).
②:如果要设置操作间的顺序性,依赖关系,GCD的话需要实现此功能就需要更多的代码,那么使用NSOperationQueue就不需要那么繁琐,它本身就封装了这些功能
③:如果异步操作过程需要很多被交互和呈现UI,那么就使用NSOperationQueue
如果任务之间不怎么需要依赖,而需要更高的并发能力,是效率,那么就使用GCD即可
网友评论