NSOperationQueue与GCD的区别

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];

可以决定执行的顺序

posted on 2015-03-09 15:53  Leo1992  阅读(192)  评论(0编辑  收藏  举报

导航