さまざまなxmlファイルをダウンロードしてWebサイトから解析するプロセスを作成しようとしています。現時点では、...を使用してすべての作業を行うことができます。
dispatch_async(dispatch_get_current_queue(),^ { [self updatePersons]; });
dispatch_async(dispatch_get_current_queue(),^ { [self updatePlaces]; });
dispatch_async(dispatch_get_current_queue(),^ { [self updatePositions]; });
dispatch_async(dispatch_get_current_queue(),^ { [self updateContacts]; });
を使用しているため、これによりメインスレッドがロックされますdispatch_get_current_queue
。以下の方法を試した場合のように、これらを互いに中断せずに実行するにはどうすればよいですか。
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePersons]; });
私が使用しているコードの完全版は以下のとおりですが、ログ出力によると、それらは同時に実行されます(すべてを正しく理解していれば、これは目的です)。ただし、それらのコードが実際に終了することはありません...ログ出力ですべてが解析されているかどうかがわかりません。メイン画面はフリーズしたままです。ログには、表示するはずのログの一部しか表示されません...他のプロセスのNSLog
メッセージによって中断されているようです。
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePersons]; });
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePlaces]; });
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updatePositions]; });
dispatch_async(dispatch_get_global_queue(0,0),^ { [self updateContacts]; });
dispatch_async(dispatch_get_global_queue(-2,0),^ {
dispatch_async(dispatch_get_main_queue(),^ {[self setBottomBarToUpdated]; });
});
下部のバーのラベルで実行中に進行状況についてユーザーを更新しながら、アプリが上記の各機能を介して情報を取得する方法を作成しようとしています。4つの関数のそれぞれで以下のコードを使用することで、テキストの更新が正常に機能しているようです...
dispatch_async(dispatch_get_main_queue(),^ {
[self setBottomBarToUpdating:@"Updating Places..."];
});
誰かがキューを使用する適切な方法について助けを提供して、私のアプリがロックされないようにすることができれば、私はそれを大いに感謝します。ありがとう!