元の質問を次のように言い換えます。
正しく構築された並行処理が与えられた場合、NSOperation
によって返される値はisConcurrent
実際に操作の実行をまったく変更しますか?
、 、またはオペレーティング システムの他の部分でisConcurrent
フラグがどのように使用されているかを理解しようとすることはできますが、発見した情報に頼るのは間違いです。NSOperation
NSOperationQueue
フラグの目的は、次のように説明されています。
操作が現在のスレッドに対して非同期で実行される場合は YES を返し、操作を開始したスレッドで操作が同期的に実行される場合は NO を返します。
正しく応答する限り、誰がメソッドを呼び出すか、またはメソッドが Apple フレームワーク内のロジックにどのように影響するかは重要ではありません。
その他の注意事項:
ドキュメントは、NSOperationQueue
OSX 10.6 および iOS 4.0 の前後でこの値を使用する方法の変更について言及しています。
OS X v10.6 では、操作キューは isConcurrent によって返された値を無視し、常に別のスレッドから操作の start メソッドを呼び出します。ただし、OS X v10.5 では、操作キューは isConcurrent が NO を返す場合にのみスレッドを作成します。...
この変更により、QA1712で説明されている問題が発生しました。
この解説は、一般的にisConcurrent
フラグが 10.6 および iOS 4 以降では使用されていないことを意味すると解釈され、無視してかまいません。メソッドは正式に廃止されておらず、並行操作に必要なオーバーライドとしてまだ文書化されているため、この解釈には同意しません。
また、過去に用途が変更されたという事実は、将来また変更される可能性があることを示しているため、現在は影響がないと思われる場合でも、正しく対応する必要があります。