私が知っているように、isFinished KVO 通知と isFinished=YES を送信すると NSOperation は NSOperationQueue から削除され、isCancelled KVO 通知を送信しても NSOperationQueue から削除されません。だから私のキャンセル機能で:
操作が以前にキャンセルされた場合は、そのまま戻ります。
操作が終わったら、ただ戻るだけです。
NSOperation が実行中の場合、そのキューは前に isExecuting KVO 通知を送信しているため、isCancelled および isFinished KVO 通知を送信するだけで、そのキューはそれを削除します。
NSOperation が準備完了のとき、そのキューはまだ isExecuting KVO 通知を送信していないため、isExecuting KVO 通知を送信しましたが、コンソールでいくつかのエラーが発生しました: キューによって開始されずに isFinished=YES になりました。
私の質問は次のとおりです。準備ができたばかりの操作をキャンセルするときはどうすればよいですか? キューごとに削除したい。
ちなみに、操作の状態を保存するメンバー変数がありますが、キャンセル関数がその値に影響を与えないようにしたいので、状態が準備完了の操作をキャンセルする場合、isExecuting KVO 通知を送信するだけですが、isExecuting=NO です。状態値は準備完了です。最後に、私のコードは次のとおりです。