在iOS中,NSURL或NSXML是否跨越了一个新线程?

时间:2012-05-22 19:10:11

标签: objective-c ios xml xcode nsurl

我的程序进展如下。我称之为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"
}

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

1 个答案:

答案 0 :(得分:1)

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

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

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