0

私は XML パーサーを持っており、開始するとアプリ全体が終了するまでフリーズします。次を使用してパーサーを呼び出します。

xmlParser = [[XMLParser alloc] loadXMLByURL:@"http://abdelelrafa.com/test2.xml"];

メイン スレッドを中断せずに XML パーサーを動作させる最善の方法は何ですか? 別のスレッドを使用することが最善の選択肢なのか、それとも別のものを使用するのかを知りたいです。

4

2 に答える 2

1

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 要素を更新したり、完了/失敗のコールバックを実行したりできるようにします

于 2013-11-15T02:58:35.307 に答える