0

我有一个进度如下的程序。我调用了一个名为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"
}

我遇到的问题是地图在完全创建之前被返回。此外,在“完成解析”之前打印“准备返回”,这向我表明有多个线程在工作。我对吗?如果是这样,一个简单的锁是让它工作的最好方法吗?

4

1 回答 1

1

如果您告诉它异步执行,NSURLConnection 将在另一个线程中执行。

在我看来,处理这个问题的最好方法是编写你自己的委托协议,并在你下载并解析数据后使用委托返回你的地图。

您可以使用 NSURLConnection 同步检索数据,但您可能会强制用户等待较长时间,尤其是在发生连接超时时。我会避免这种方法。

于 2012-05-22T20:41:35.337 回答