5

潜在的なブロックの問題を回避するために、メイン スレッドから実行する必要があるデータ読み込み操作があります。これを行うには、NSOperationQueue と NSOperations を使用します。

ただし、発生した 1 つの問題は、受信情報に基づいて追加の操作を生成する操作の 1 つが存在することです。これを解決しようとすると、他の場所で発生したいくつかの小さな問題も解決されました.NSOperationにサブタスク用の独自のキューを与えることでした。

問題は、「メイン」が終了するとすぐに、サブキューの処理が終了したかどうかに関係なく、NSOperation が「終了」としてマークされることです。その動作をオーバーライドするにはどうすればよいですか?

4

2 に答える 2

1

「メイン」が終了するとすぐに、NSOperation は「終了」としてマークされます。

このロジックは に実装されているため、カスタム ロジックで[NSOperation start]オーバーライドする必要があります。mainisFinished

于 2013-11-27T08:00:40.480 に答える
1

waitUntilAllOperationsAreFinished操作のメイン メソッドを終了する前に、子キューにメッセージを送信できます。これは簡単ですが、かなり無駄なスレッド全体をブロックするため、良い考えではありません。

より良い解決策は、依存関係システムを使用することです。メイン オペレーションに依存する別のオペレーションを作成します。子操作を作成した後、それらを新しい「仕上げ」操作への依存関係として追加します。

于 2013-05-13T19:52:15.133 に答える