私は XML パーサーを持っており、開始するとアプリ全体が終了するまでフリーズします。次を使用してパーサーを呼び出します。
xmlParser = [[XMLParser alloc] loadXMLByURL:@"http://abdelelrafa.com/test2.xml"];
メイン スレッドを中断せずに XML パーサーを動作させる最善の方法は何ですか? 別のスレッドを使用することが最善の選択肢なのか、それとも別のものを使用するのかを知りたいです。
私は XML パーサーを持っており、開始するとアプリ全体が終了するまでフリーズします。次を使用してパーサーを呼び出します。
xmlParser = [[XMLParser alloc] loadXMLByURL:@"http://abdelelrafa.com/test2.xml"];
メイン スレッドを中断せずに XML パーサーを動作させる最善の方法は何ですか? 別のスレッドを使用することが最善の選択肢なのか、それとも別のものを使用するのかを知りたいです。
GCD を使用してこの操作を実行してみてください。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
xmlParser = [[XMLParser alloc] loadXMLByURL:@"http://abdelelrafa.com/test2.xml"];
dispatch_async(dispatch_get_main_queue(), ^{
// Update UI
});
});
新しいキューに入力しdispatch_async
、このブロックですべてのツアー ネットワーク操作/xml 解析を行いdispatch_async
、今度はメイン キューに別のキューを作成して、UI 要素を更新したり、完了/失敗のコールバックを実行したりできるようにします