1. 性能上GCD更接近底层,而NSOperationQueue则更高级抽象,所以GCD在追求性能的底层操作来说,是速度最快的。这取决于使用Instruments进行代码性能分析,如有必要的话
2. 从异步操作之间的事务性,顺序行,依赖关系。GCD需要自己写更多的代码来实现,而NSOperationQueue已经内建了这些支持
3. 如果异步操作的过程需要更多的被交互和UI呈现出来,NSOperationQueue会是一个更好的选择。底层代码中,任务之间不太互相依赖,而需要更高的并发能力,GCD则更有优势
下面简单介绍下NSOperationQueue的使用:
testOperationQueue = [NSOperationQueue new];
NSBlockOperation* blockOperation1 = [NSBlockOperation blockOperationWithBlock: ^(void){
NSLog(@"......1");
}];
[blockOperation1 setQueuePriority: NSOperationQueuePriorityVeryLow];
NSBlockOperation* blockOperation2 = [NSBlockOperation blockOperationWithBlock: ^(void){
NSLog(@"......2");
}];
[blockOperation2 setQueuePriority: NSOperationQueuePriorityNormal];
NSBlockOperation* blockOperation3 = [NSBlockOperation blockOperationWithBlock: ^(void){
NSLog(@"......3");
}];
[blockOperation3 setQueuePriority: NSOperationQueuePriorityHigh];
[testOperationQueue addOperations: @[blockOperation1, blockOperation2, blockOperation3] waitUntilFinished: FALSE];
可以决定执行的顺序