GCD vs NSOperationQueue 讨论

2016-01-07 23:48:45 +08:00
shippo7  shippo7
我最近在学习 GCD 和 Operation Queue 的区别,看完网上的众多教程之后,有些混乱,推荐这两种的都有。求大神讲解这两种的区别,如果在面试中问到这两者如何选择,应该怎么回答?
3380 次点击
所在节点   iDev  iDev
6 条回复
shippo7
shippo7
2016-01-08 00:08:13 +08:00
说说我的理解:

GCD 可以避免 Operation Queue 多个 block 直接的传值问题,代码更为简洁。

但是 StackOverFlow 上有个答案说 GCD 比 Operation Queue 更为底层,因为基于 C ,在没有特别需求的情况下,应该用高级代码
loveuqian
loveuqian
2016-01-08 00:15:20 +08:00
后者是前者的一套封装,性能肯定是前者高
一般用前者敲句 dispatch 就出来全部你想要的
之前看到一句话
还有用 gcd 解决不了的问题?那我选择辞职
0xfan
0xfan
2016-01-08 10:24:59 +08:00
NSOperationQueue 用 OO 的思想对 GCD 进行了封装,更高级。本质上都是同一套东西,选择上就看个人喜好了。网上肯定是推荐什么的都有,看的越多反而越纠结。
wingzki
wingzki
2016-01-08 16:14:10 +08:00
Operation Queue 是基于 GCD 的面向对象封装。如果你需要对任务的过程进行精确的控制用 Operation ,如果随便后台算几个数画个图什么的用 GCD 。不过理论上 Operation 能干的事 GCD 都能干,就是代码多点麻烦点,需要你有一定的功底。
sudaNY
sudaNY
2016-03-11 12:28:23 +08:00
好像楼上都说的是封装方面,其实 NSOperationQuene 的特点是可以按顺序走, gcd 是无序的。
shippo7
shippo7
2016-03-12 02:35:17 +08:00
@sudaNY

gcd 也可以提交同步队列 dispatch_sync(queue, block)

NSOperationQueue 的确只是个封装而已,底层调用的还是 gcd

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/249167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX