だから私はこれについて数日間考えていましたが、それを機能させる良い方法を見つけることができないようです.
一度に 1 つのNSOperationQueue
操作しかできない があります。私はドキュメントから理解しています:
OS X v10.6 以降では、操作をキャンセルすると、操作が依存関係を無視するようになります。この動作により、キューは操作の開始メソッドをできるだけ早く実行できます。次に、start メソッドは操作を終了状態に移動し、キューから削除できるようにします。
キャンセルを送信するとisCancelled
YESに設定されますが、私の問題は次のとおりです。
キューに20NSOperation
があり、18日をキャンセルしたところ、NSOperationQueue
実行できるようになり、終了したと表示されるまで残ります(私のNSOperation
チェックは正しくisCancelled
あります)が、キューにとどまると、何かUITableView
に設定した にもとどまりますdataSource
のようにmyOperationQueue.operations
。
それが私を悩ませていることです。ユーザーはクリックしてメソッドCancel
を呼び出しますが、操作はまだキューにあるため表示されます。cancel
NSOperation
start
メソッドで呼び出すことを考えましたcancel
が、キューだけができるわけではありませんstart
。
編集:私もオーバーライドしようとしisFinished
ましたcancel
:
[self willChangeValueForKey:@"isFinished"];
_isFinished = YES;
[self didChangeValueForKey:@"isFinished"];
それは機能しますが、キューstart
の次のものにも送信され、同時に2つになる可能性があり、1つだけが必要です。NSOperation
NSOperation