Nsxmlparser NSXML解析器,程序流到哪里去了?

Nsxmlparser NSXML解析器,程序流到哪里去了?,nsxmlparser,Nsxmlparser,我使用NSXML解析器解析从web服务接收到的SOAP响应XML。 在我的根方法中 NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 我使用此代码发送SOAP请求,其中请求变量包含我的SOAP请求。 所以在收到数据之后 -(void)connectionDidFinishLoading:(NSURLConnection *)connect

我使用NSXML解析器解析从web服务接收到的SOAP响应XML。 在我的根方法中

 NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
我使用此代码发送SOAP请求,其中请求变量包含我的SOAP请求。 所以在收到数据之后

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection{
     //codes to recieve webData
    xmlParser = [[NSXMLParser alloc] initWithData: _webData];
[_xmlParser setDelegate: self];
[_xmlParser setShouldResolveExternalEntities: YES];
[_xmlParser parse];

 }

现在,程序流向didStartElement、didFinishDocument方法。我的根方法需要返回解析xml后获得的结果,但是当我使用断点检查程序流时,解析方法不会在代码中调用return语句之前结束,因此我无法返回解析后的值。如何解决这个问题?

NSXMLParser
完全同步工作。当
[\u xmlParser parse]
返回时,所有解析都已完成(或因错误而中止)。

根据您的描述,问题并不十分清楚。问题似乎是,在构造根元素之后,您仍然在NSXMLParser的解析方法中继续处理程序


要解决这个问题,只需在主线程上调用选择器,将解析器的委托结果(根元素)传递给最终处理它的方法。或者,对主线程使用dispatch_async,在主线程中调用一个处理根元素的方法。

当XML解析器返回所有解析完成时,是,但当所有解析完成时,应用程序流在我的程序中继续,而不等待xml解析器解析文档。@YugeshShrestha:所以问题是
NSURLConnection
异步工作?是的。在NSURLConnection完成之前,我是否可以显示一个加载条之类的东西,它将锁定其他UI元素,但用户将知道应用程序正在运行且未冻结?@YugeshShrestha:您可以设置
self.view.userInteractionEnabled=NO
以禁用用户交互,并显示一个
ui活动指示灯视图
。还有其他进度指标视图,例如。我没有使用这些,所以我不能建议哪一个是最好的。所以我应该发送一个同步请求,它实际上会停止所有进程,直到连接和解析完成,并显示UIActivityIndicator,直到任务完成。这就是我应该做的吗?