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

时间:2015-02-03 09:58:05

标签: ios nsoperation nsoperationqueue nsmutableurlrequest

我正在使用POST方法将视频上传到服务器。上传视频会放在main()的{​​{1}}内。之后,它排队等候NSOperation

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

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

使用NSOperation进行视频上传

我尝试使用sendSynchronousRequest:,但结果仍然相同

1 个答案:

答案 0 :(得分:1)

这里很少有建议。

首先,您需要建立一种机制,以了解您何时从WiFi到蜂窝电话。如果是这样,您需要将cancel消息发送到操作以取消它。

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

使用同步操作可以阻止您取消正在运行的任务。

类似的方法可以与NSUrlSession一起使用(请参阅invalidateAndCancel方法)。在这种情况下,您可以避免使用操作来包装上载任务。

如果您需要别的东西,请告诉我。