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

标签 ios nsoperation nsoperationqueue nsmutableurlrequest

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

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

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

正在使用sendSynchronousRequest:进行视频上传

我尝试使用 AFNetworking 但结果保持不变

最佳答案

这里有一些建议。

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

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

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

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

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

关于ios - NSOperationQueue在网络切换时取消当前的NSOperation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28296021/

相关文章:

objective-c - NSOperation完成

ios - 无法在 ios 设备上部署 Ionic Framework 应用程序

ios - 使用 NSOperationQueue,如何添加到后台队列而不是主队列,以及如何控制操作量?

iphone - IconDownloader,延迟下载问题

cocoa - 我应该使用 NSOperation 还是 NSRunLoop?

ios - NSBlockOperation 在执行前不等待依赖

ios - 具有 iOS 年度 View 的日历控件

ios - 在iOS中获取iBeacon的地理位置经度和纬度

javascript - 这个糟糕的代码是如何完全破坏 IOS PhoneGap/cordova 应用程序中的 JS 文件的?

objective-c - NSOperation & 单例 : Correct concurency design