使用NSURLConnection串行发出异步请求

时间:2012-01-16 15:27:38

标签: objective-c ios cocoa-touch asynchronous nsurlconnection

我正在编写一个与RESTful Web服务交互的iPhone应用程序,我需要请求一个身份验证令牌以用于所有后续请求。我希望尽可能避免多线程,而是使用异步NSURLConnection方法来确保主线程不会阻塞(从而确保用户界面保持响应)。

我遇到的问题是我无法弄清楚如何使后来的请求等待获取令牌而不使令牌获取同步请求并阻塞主线程。

我发现我可以在一个循环中使用在获取令牌时设置的信号量值,但这看起来很笨拙并且做错了。是否有正确的方法可以做到这一点?

2 个答案:

答案 0 :(得分:4)

如果您要为iOS 5.0或更高版本构建,可以使用:

+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]

completionHandler:区块中进行后续调用。

答案 1 :(得分:1)

您可能需要查看MKNetworkKit。通过一些小的调整,您应该能够将其配置为冻结队列,直到令牌返回,此时您可以使用addHeaders:修改队列中的现有操作以包含身份验证令牌。 “冻结”是MKNK的主要特色之一。它允许您即使在线下也能继续发出请求,并且一旦建立连接就会发送它们。