2
NSDate *dateStartAutoComplete = [NSDate date];

[[NSOperationQueue new]addOperationWithBlock:^{
    NSTimeInterval startFetching = [NSDate.date timeIntervalSinceDate:dateStartAutoComplete];
    PO(@(startFetching));

...

结果:

2013-03-15 06:00:12.413 BadgerNew[4120:907] @(tiTotalTime): 0.353954017162323
2013-03-15 06:00:13.476 BadgerNew[4120:8d23] @(startFetching): 0.106734037399292
2013-03-15 06:00:13.502 BadgerNew[4120:8d23] @(finishFetching): 0.1373000144958496
2013-03-15 06:00:13.717 BadgerNew[4120:907] @(tiTotalTime): 0.3521299958229065
2013-03-15 06:00:13.869 BadgerNew[4120:675b] @(startFetching): 0.3048880100250244
2013-03-15 06:00:13.918 BadgerNew[4120:675b] @(finishFetching): 0.3537369966506958
2013-03-15 06:00:14.018 BadgerNew[4120:907] @(tiTotalTime): 0.454010009765625
2013-03-15 06:00:16.317 BadgerNew[4120:8847] @(startFetching): 1.014970004558563
2013-03-15 06:00:16.375 BadgerNew[4120:8847] @(finishFetching): 1.072436988353729
2013-03-15 06:00:16.661 BadgerNew[4120:8d23] @(startFetching): 1.045746028423309
2013-03-15 06:00:16.691 BadgerNew[4120:8d23] @(finishFetching): 1.07514101266861
2013-03-15 06:00:16.721 BadgerNew[4120:907] @(tiTotalTime): 1.419299006462097
2013-03-15 06:00:16.759 BadgerNew[4120:907] @(tiTotalTime): 1.142507016658783
2013-03-15 06:00:19.709 BadgerNew[4120:8847] @(startFetching): 1.773845970630646
2013-03-15 06:00:19.795 BadgerNew[4120:8847] @(finishFetching): 1.860616981983185
2013-03-15 06:00:19.900 BadgerNew[4120:907] @(tiTotalTime): 1.965098977088928

从我们启动计数器到执行 NSOperationQueue 中的操作花了 1.4 秒。

它甚至不是一个单线程队列。

4

1 回答 1

6

NSOperation 类包含设置操作优先级的方法。您应该能够使用操作setQueuePriority:(NSOperationQueuePriority)priority上的方法设置操作优先级。该文档可以为您提供有关该方法采用的常量的更多详细信息。

由于您正在向队列添加操作,因此您实际上无法设置优先级,并且无论如何您都无法获得对为队列创建的对象的引用。相反,您应该提前创建一个NSBlockOperation并将其添加到队列中。

于 2013-03-15T00:11:52.263 回答