让程序等待,直到代码的其余部分加载完毕

时间:2010-08-23 09:43:25

标签: iphone objective-c

我想显示从Web服务加载的数据,但Web服务需要很长时间,并且“数据”在加载之前显示。我怎么强迫它等?

感谢。

连接到网络服务

NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:tmpURl];

[theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

[theRequest addValue:@"http://tempuri.org/GetCategory" forHTTPHeaderField:@"SOAPAction"];

NSString *msgLength=[NSString stringWithFormat:@"%i",[soapMessage length]];

[theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"];

[theRequest setHTTPMethod:@"POST"];

[theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

if(conn)
{

}

2 个答案:

答案 0 :(得分:2)

默认情况下,NSURLConnection类是异步的,没有什么特别需要做的。我可以从上面发布的代码中看到你正在设置NSURLConnection的委托,你只需要实现委托所需的方法。

查看NSURLConnection类引用,特别是“概述”部分,其中解释了委托方法。

在您的代码段中,在您开始连接之后,您可以显示带有微调器的UIAlertView,然后在数据到达时在委托方法中将其关闭。

答案 1 :(得分:1)

有两种方法可以实现,Web服务soap调用可以异步和同步调用,但我只建议使用异步方法,因为它更快,你将不必要地阻止iPhone UI线程,你可能会阻止用户界面,以便用户认为您的程序已崩溃。

最好的办法是在桌面上显示一些UI动画和一些MODAL窗口,以防止用户输入任何输入。