App WAIT for -initWithContentsOfURL:检索网络数据吗?

时间:2009-06-21 06:58:36

标签: url asynchronous iphone

我正在尝试从iPhone OS应用程序中的服务器上的.php文件中检索数据。在一种方法中,我使用以下代码:

NSString *aString = [[NSString alloc] initWithContentsOfURL:aURL encoding:anEncoding error:nil];

//See what I got
NSLog(aString);

当我运行应用程序时,似乎应用程序如此快速地运行代码我怀疑有足够的时间来发送数据请求。结果字符串是完全空的,这进一步支持了我的怀疑。这里发生了什么?应用程序是否在等待-initWithContentsOfURL从我的服务器上的.php文件中检索数据?如果应用程序不等待此方法,是否有另一种方法可用于执行数据请求,以便在转移到下一个代码之前完成请求的WAITS?

(我也读过一些关于NSURLConnection的内容 - 这可能是我应该考虑的而不是-initWithContentsOfURL吗?)

1 个答案:

答案 0 :(得分:3)

NSURLConnection非常适合从网上获取文件...它本身并不“等待”,而是它的委托回调:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

...允许您在收到数据和完全下载数据时收到通知。通过这种方式,您可以在应用程序显示(如果您愿意)UIProgressBar,因为数据进入,然后在完全接收时随意处理该文件。

相关问题