私は渡したいものが満載のXMLドキュメントを返すAPIに対して認証を行う関数を書いています。この関数は、NSURLConnectionのsendSynchronousRequest
メソッドを使用して同期呼び出しを行うことは非常に簡単です。しかし、このメソッドが返されると、NSXMLParserのインスタンスをインスタンス化し、データで初期化し、解析などを行う必要があります。sendSynchronousRequest
返品後に機能しますか? )、NSXMLParserをインスタンス化し、解析するデータを与え、単一のメソッド呼び出しで解析を開始し、解析が終了するまで戻りません。例えば非同期のCocoaクラスを同期的に動作させる
:上記の例で
- (void) myFunction
{
/* other code */
NSData *returnedData = [NSURLConnection sendSynchronousRequest:authRequest returningResponse:&authResponse error:&authError];
MyParserClass *parser = [[MyParserClass alloc] initWithData:returnedData];
[parser parseData];
}
、MyParserClass
はNSXMLParserデリゲートであり、そして通常、委任された方法で全ての解析を行います。 parseData
は解析を開始し、終了するまで戻りません。
どのようにすればparseData
と書くべきですか?ブロックアプローチ?
EDIT:私はNSXMLParserの-parse関数が同期的であることを思い出しました。それでも、私は誰でも非同期クラスでこれを行う方法を説明できるかどうかを知りたいです。
これはすべてバックグラウンドスレッドで発生しています。同期ネットワークは、ココアでは決して正しい方法ではありません。 –