【问题标题】:Is there a reliable alternative to NSURLConnection?NSURLConnection 有可靠的替代方案吗?
【发布时间】:2012-06-27 14:59:23
【问题描述】:

我的应用正在调用 Web 服务来检索一些数据,我希望尽可能地提供最佳体验。我发现使用NSURLConnection 很难及时提供良好的反馈。

有时我的 iPhone 尝试加载数据一两分钟,但我看不出有什么方法需要这么长时间,或者为什么下载如此麻烦。然后几分钟后我有时会得到一个错误代码。

我想准确地展示正在发生的事情。像这样的消息:

  1. “正在建立互联网连接”
  2. “正在尝试连接到服务器”
  3. “已连接...”
  4. “正在下载数据...”
  5. “下载完成!”

当出现服务器无法访问或DNS无法解析等问题时,最好再试几次,而不是简单地退出并抛出错误。

是否有替代 NSURLConnection 的替代品,可以更优雅地处理这些事情并就正在发生的事情提供更好的及时反馈?

【问题讨论】:

  • 你看过NSURLConnectionDelegate吧?它为您提供了很多这样的回调,但可能被认为很复杂。
  • 你可以用 NSURLConnectionDelegate 协议做 3、4、5。

标签: iphone ios web-services ipad nsurlconnection


【解决方案1】:

我一直是AFNetworking 库的忠实粉丝。非常易于使用,并将所有网络调用封装在易于使用的块中。

它也保持最新状态,因此随着项目的进展和老化,您应该可以安全地获取所需的所有更新。

【讨论】:

  • 谢谢!它是否提供有关正在发生的事情的及时反馈?委派来电或通知?
  • 它不使用委托方法,它使用块。所以你开始你的连接,你有一个成功块和一个失败块。该方法将继续执行,但连接完成后,它将执行成功/失败块内的任何逻辑。您始终可以创建自己的委托方法以从这些块内部调用。这就是我所做的。然后,您可以完全控制谁收到通知。
【解决方案2】:

我认为你应该误用 NSURLConnection 和 NSURLConnectionDelegate,因为你可以用它们来满足你的大部分需求。

但是,MKNetworkKit 呢?我一直在使用它,它确实让这类问题更容易处理。

【讨论】:

  • 谢谢!它是否提供有关正在发生的事情的及时反馈?委派来电或通知?
【解决方案3】:

Something 可以帮助你实现你想要的。由于不再支持ASIHTTPRequest,MKNetworkKit 将是您的最佳选择。要检查连接,您始终可以使用Reachability

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2012-05-29
    • 2021-12-03
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多