2

私のアプリケーションでは、操作を実行したいファイルの配列をループすることにより、NSOperationQeueuに並行操作を追加します。キューが空になり、すべての操作が終了したことを知りたいので、(短縮バージョン)を使用します。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

        if (object == myLocalModeController.myFileobjectsQueue && [keyPath isEqualToString:@"operations"]) {


        if ([myLocalModeController.myFileobjectsQueue.operations count] == 0) {
            NSLog(@"Local: Fileobject creation has completed");  
          }
        }
     }

私の問題は、操作が非常に軽量で、キューがまだ追加されている間にすぐに終了することがあるということです。これにより、キュー内のアイテム数がゼロであるにもかかわらず、操作が完了していないことが頻繁に発生します。ただし、現在の設定に基づいて、プログラムは'[myLocalModeController.myFileobjectsQueue.operations count]==0'以降に操作が終了したと見なします。キューが実際に終了し、すべての操作が終了したことを確認する方法についての提案はありますか?ありがとう。乾杯、トロンド

4

1 に答える 1

2

setSuspendedを使用して操作を追加している間は、すべての操作をブロックすることをお勧めします。

- (void)setSuspended:(BOOL)suspend;

したがって、すべての操作を追加する前にYESに設定し、終了したらNOに設定します。

于 2013-02-22T19:36:50.577 に答える