我的程序进展如下。我称之为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"
}
我遇到的问题是在完全创建地图之前返回地图。此外,在“完成解析”之前正在打印“准备返回”,这表明有多个线程在工作。我对吗?如果是这样,一个简单的锁是否是使它工作的最佳方式?
答案 0 :(得分:1)
NSURLConnection将在另一个线程中执行,如果您告诉它异步执行。
在我看来,处理此问题的最佳方法是编写自己的委托协议,并在下载和解析数据时使用委托来返回地图。
您可以使用NSURLConnection同步检索数据,但是您可能会强制用户等待一段延长的时间,尤其是在发生连接超时的情况下。我会避免这种做法。