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