objective-c - 如何使用 AFNetworking 设置超时

我的项目正在使用 AFNetworking。

https://github.com/AFNetworking/AFNetworking

如何调低超时时间?没有互联网连接的自动柜员机在大约 2 分钟内不会触发失败 block 。太长了……

最佳答案

更改超时间隔几乎肯定不是您所描述问题的最佳解决方案。相反,您真正想要的是让 HTTP 客户端处理网络变得无法访问,不是吗?

AFHTTPClient 已经有一个内置机制让您知道何时失去互联网连接,-setReachabilityStatusChangeBlock:

在慢速网络上请求可能需要很长时间。最好相信 iOS 知道如何处理慢速连接,并区分慢速连接和完全没有连接。


为了扩展我对为什么应该避免在这个线程中提到的其他方法的推理,这里有一些想法:

  • 甚至可以在请求开始之前取消请求。将请求排队并不能保证它实际开始的时间。
  • 超时间隔不应取消长时间运行的请求,尤其是 POST。想象一下,如果您尝试下载或上传 100MB 的视频。如果请求在速度较慢的 3G 网络上尽可能地进行,那么如果花费的时间比预期的要长,为什么还要停止它呢?
  • 执行 performSelector:afterDelay:... 在多线程应用程序中可能很危险。这会让自己面临晦涩难懂且难以调试的竞争条件。

https://stackoverflow.com/questions/8304560/

相关文章:

iphone - 什么是强属性属性

objective-c - 如何在 Swift 项目中使用 Objective-C CocoaPod

objective-c - 值/对象的 NSDictionary 键?

objective-c - NSString 到 CFStringRef 和 CFStringRef

objective-c - Objective-c 中的 "instance variable"和

iphone - Objective-C 将 NSDate 设置为当前 UTC

objective-c - 如何为单个文件启用 ARC

ios - 在 SKScene 中设置按钮

iphone - NSLocale currentLocale 总是返回 "en_US"而不是用户的

objective-c - 基于 View 的 NSTableView 具有动态高度的行