私は次のように進行するプログラムを持っています。と呼ばれるメソッドを呼び出しgetCharacteristics
ます。このメソッドは、NSURL接続(すべてのネットワークコードは別のファイルで実行されます)を介してリモートサーバーに接続し、応答を受信すると、元のクラスへのメソッド呼び出しを行います。次に、この元のクラスはデータ(xml)を解析し、その内容をマップとして保存します。
私が抱えている問題は、このトランザクションのどこかで別のスレッドが生成されているように見えることです。
これが私がしていることを示すサンプルコードです:
@property map
- (void) aMethod
{
[[WebService getSingleton] callWebService: andReportBackTo: self]
Print "Ready to Return"
return map;
}
- (void) methodThatIsReportedBackToAfterWebServiceRecievesResponse
{
//Parse data and store in map
Print "Done Parsing"
}
私が遭遇している問題は、マップが完全に作成される前に返されることです。さらに、「Ready to Return」は「Doneparsing」の前に印刷されており、複数のスレッドが動作していることを示唆しています。私は正しいですか?もしそうなら、それを機能させるための最良の方法は単純なロックでしょうか?