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 に答える