Objective-C等待异步HTTP-Request完成

时间:2012-01-30 15:37:53

标签: objective-c asynchronous nsurlconnection httprequest

我使用以下代码执行HTTP-Request:

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

之后我想使用收到的数据。我的问题是我无法在connectionDidFinishLoading中执行此操作,但必须在我的代码中的另一个位置执行此操作。由于这是一项异步任务,如何在任务完成之前验证我是否开始使用收到的数据?

提前致谢,

编辑:我的主要问题是在使用接收数据的代码之后调用委托。

2 个答案:

答案 0 :(得分:2)

您只需将收到的数据保存在ivar中,即可随时使用。如果你真的想确定,你也可以在

中使用BOOL设置为YES
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

不要忘记,自iOS 5以来,NSURLConnectionDelegate(和DownloadDelegate)已经改变。

答案 1 :(得分:0)

下载AFNetworking库并将其用于您的连接。它有块方法,对我而言,使用的方法要比使用委托方法更“干净”。 AFNetworking适用于iOS 4及更高版本。

https://github.com/AFNetworking/AFNetworking

阅读这篇关于AFNetworking基础知识的文章:

http://engineering.gowalla.com/2011/10/24/afnetworking/