0

私は糸脱毛にとても慣れていません。これが私の問題です。NSXMLParserを使用し、その他のマイナーなことも行うカスタムパーサークラスがあります。ネットワークからXMLを解析し、値の辞書を作成します。また、パーサーから渡されたデータ(NSDictionary)を処理し、マネージドコンテキストで実際のCoreDataオブジェクトを作成するDataProcesorヘルパークラスもあります。

次に、パーサーをバックグラウンドスレッドに移動します。どうすればいいですか?(NSthread、NSOperation、GCD ...)?パーサーは、これらのNSDictionariesをメインスレッドにあるデータプロセッサーにどのように返す必要がありますか?

Parserオブジェクトは、NSXMLParserDelegateプロトコルに準拠しています。パーサーが所有するNSXMLParserからのコールバックを処理します。

4

1 に答える 1

1

GCDを使用して、バックグラウンドスレッドでXMLパーサーを起動します

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
    //call your xml parser
    //pass yourself in as it's delegate
});

コールバックでNSDictionaryを受け取ったら、UI要素を更新する前にメインキューに戻ります

-(void)myCallBack:(NSDictionary*)newData {
    dispatch_async(dispatch_get_main_queue(), ^{
        //execute on main queue
        ProcessDictionaryData(newData);
    });
}
于 2012-05-23T18:52:30.287 に答える