0

链接异步 NSURLConnections 最合适的方法是什么?例如,我需要使用 Web 服务注册用户。工作流程如下:获取注册令牌 => 使用令牌注册 => 获取登录令牌 => 使用令牌登录。

我知道如何创建一个异步 NSURLConnection,但我不确定如何在继续之前确保之前的连接已经完成。我知道我可以使用它来实现这一点,NSURLConnection sendSynchronousRequest但我不喜欢在这些链接请求发生时我的主线程被阻塞。

4

3 回答 3

2

当我们为 iPhone 构建第一个版本的 SignMeOut 时,我们确实做到了这一点。我们创建了 NSUrlconnection 的一个子类,并在 connectionDidFinish 中给它一个标识标签,您将能够使用带有枚举的简单开关/案例。效果很好 - 您可以在我们的博客中看到整个流程以及示例和代码

http://www.isignmeout.com/multiple-nsurlconnections-viewcontroller/

更新

我已将 NSURLConnection 子类修改为更简单的类别。大多数用法是相同的,但使用相同的类更清洁

https://github.com/Shein/Categories

于 2012-04-22T14:26:44.107 回答
1

你可以看看connectionDidFinishLoading启动另一个异步连接。对于连接结束的条件,您可以保留对连接的引用,以防其他连接也有望完成(在您的情况下可能不需要)。让您的班级遵循并在委托方法NSURLConnectionDelegate中触发适当的连接。connectionDidFinishLoading您还可以使用该connectionDidReceiveData:方法检查从服务接收到的凭据等。也通过文档

于 2012-04-22T14:14:44.637 回答
1

你有不同的选择:

  • 使用可变数组或字典创建队列
  • 如果您将它与用于 NSUrlConnection 的新的唯一 ios5 API 结合使用,则创建一个 NSOperationQueue 会很容易
  • 第三方库,例如 AFNetworking
  • 阻止 GCD 对它们进行分组(由于 NSRunLoop 原因很难,请注意连接在哪个线程中运行)
于 2012-04-22T14:24:57.880 回答