NSOperationQueue在网络切换时取消当前的NSOperation

NSOperationQueue cancels the current NSOperation when network switched

我正在使用 POST 方法将视频上传到服务器。上传视频放在 NSOperationmain() 内。之后它被排队到 NSOperationQueue

当网络在 Wi-Fi 和蜂窝数据之间切换时,当前操作失败。

如何处理网络切换NSOperation失败的问题。

我正在使用 sendSynchronousRequest: 上传视频

我尝试使用 AFNetworking,但结果还是一样

这里有一些建议。

首先,您需要设置一种机制来了解您何时从 WiFi 切换到蜂窝网络。如果是这样,您需要向操作发送 cancel 消息以取消它。

然后,您需要将您的操作转换为异步操作(覆盖 asynchronous 属性,旧的被命名为 concurrent)。每次上传一大块数据时,您需要验证操作是否已被取消,检查 isCancelled 属性,并在必要时回滚。

使用同步操作可防止您取消当前的任务 运行。

类似的方法可用于 NSUrlSession(参见 invalidateAndCancel 方法)。在这种情况下,您可以避免使用操作将上传任务包装在其上。

如果您还需要其他东西,请告诉我。