我的项目是使用AFNetworking.

https://github.com/AFNetworking/AFNetworking

我如何降低超时时间?没有互联网连接的自动取款机故障的挡路大约有2分钟不会被触发.WAAY to Long...

推荐答案

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

AFHTTPClient已经有一个内置的机制,可以在互联网连接中断时让你知道,-setReachabilityStatusChangeBlock:.

在速度较慢的网络上,请求可能需要很长时间.最好相信iOS知道如何处理慢速连接,并分辨出这与根本没有连接的区别.


为了进一步说明为什么应该避免使用本文中提到的其他方法,我有以下几点 idea :

  • 请求可以在开始之前就被取消.将请求排队并不能保证它实际上何时开始.
  • 超时间隔不应取消长时间运行的请求,尤其是POST.想象一下,如果你试图下载或上传一个100MB的视频.如果请求在一个缓慢的3G网络上尽其所能地进行,那么如果它比预期的时间长一点,你为什么会不必要地停止它?
  • 在多线程应用程序中执行performSelector:afterDelay:...可能会很危险.这会使自己expose 在模糊且难以调试的竞争环境中.

Ios相关问答推荐

如何在PINCH上添加UITextfield以zoom 图像

在iOS中禁用URLSession自动重试机制

如何访问iOS模拟器中的zoom 设置?(在搜索中列出,但不可见)

如何使用超薄material ,但没有浅色/填充?

clang:错误:SDK 路径中不包含libarclite

在 Swift 中,对象如何被准确地从内存中移除?

当 Swift 枚举具有 any existential 作为其关联值之一时,我如何使它符合 `Equatable`?

无法在 CollectionView 中禁用部分弹跳 - 组合布局

我需要二进制文件来进行 App Store 应用程序传输吗?

包装在 AnyView 中时 UIViewControllerRepresentable 无法正常工作

Swift 5.7 - 使存在的任何协议符合 Hashable

如何在字段包含字典数组的firestore上查询?

`Task` 在内部调用异步函数时阻塞主线程

如何使用 Swift 文档注释

如何告诉 SwiftUI 视图绑定到嵌套的 ObservableObjects

快速禁用 UITextfield 的用户输入

Xcode 10.2 无法在 iOS < 10 的模拟器上运行应用程序

如何计算 Swift 数组中元素的出现次数?

如何用 CAShapeLayer 和 UIBezierPath 画一个光滑的圆?

UINavigationBar - 以编程方式设置标题?