2016-05-18 7 views
0
[self.operationsQueue waitUntilAllOperationsAreFinished]; 
[self.operationsQueue cancelAllOperations]; 

これは私が望むものを達成しません。NSOperationsQueueのすべての操作をキャンセルし、すべての操作をキューから削除する方法

NSOperationsQueueですべての操作をキャンセルし、すべての操作をキューから削除するにはどうすればよいですか?

+1

'waitUntilAllOperationsAreFinished'の呼び出しは、すべての操作が完了するまでブロックします。それ以降の操作のキャンセルは、その時点ですべて完了しているため、無意味です。 – rmaddy

+0

すべての操作が完了した後にあなたが意味することを理解できません。 –

+1

'waitUntilAllOperationsAreFinished'は、すべての操作が完了するまで戻りません。あなたのコードが 'cancelAllOperations'の呼び出しに達するまでには、キューには何も操作が残っていません。取り消すことは何も残っていません。要するに、単に 'cancelAllOperations'を呼び出してください。 – rmaddy

答えて

0

[self.operationsQueue waitUntilAllOperationsAreFinished]は必要ありません。

[self.operationsQueue cancelAllOperations]は、キュー内のすべての操作にisCancelled = YESを設定するだけで、これに対応するのは操作そのものです。

したがって、実行するときに定期的にself.isCancelledをチェックするだけです。

- (void)main 
{ 
    if (self.isCancelled) { 
     return; 
    } 

    // Do some work 

    if (self.isCancelled) { 
     return; 
    } 

    // Do some more work 
} 
関連する問題