NSOperation和GCD如何选择
GCD以block为单位,代码简洁。同时GCD中的队列、组、信号量、source、barriers都是组成并行编程的基本原语。对于一次性的计算,或者仅仅为了加快现有方法的运行速度,选择轻量化的GCD就更加方便
NSOperation可以用来规划一组任务之间的依赖关系,设置它们的优先级,任务能被取消。队列可以暂停、恢复。NSOperation还可以自定义子类。这些都是GCD没有具备的。
可以根据情况有效结合NSOperation和GCD一起使用
GCD和NSOperation有什么区别?
GCD是纯C语言的API,NSOperation是基于GCD的OC版本封装
GCD只支持FIFO的队列,NSOperation可以很方便地调整执行顺序,设置最大并发数量
NSOperationQueue可以轻松在operation间设置依赖关系,而GCD需要些很多代码才能实现
NSOperationQueue支持KVO,可以检测operation是否正在执行(isExecuted),是否结束(isFinisn),是否取消(isCancel)
GCD的执行速度比NSOperation快
网友评论