用AFNetworking做离线下载遇到的小坑

之前用AFNetworking做过一个离线下载的功能,但是下载过程如果遇到服务器宕机或者报错,该下载包就一直不能重新下载了。经过排查,终于找出了原因所在:AFNetworking为了方便离线浏览,会将Url的Response默认缓存起来,其方法是:

- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block {
    self.cacheResponse = block;
}

所以,一旦Response被缓存后,下次不再重复发起连接,将直接将同样地Response返回,也就是说:网络正常的情况下,服务器出错,一旦服务器出错的Response被缓存,就算服务器修复后,也有可能造成iOS客户端持续报错。这种情况将是致命的。

解决方案:

[[NSURLCache sharedURLCache] removeAllCachedResponses];

用来清理所有URL缓存的Response

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,094评论 19 139
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 9,221评论 2 7
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 10,687评论 1 23
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,668评论 4 61
  • 戳下边蓝字 无提取码 百度云 我老婆是学生会长 第一季全集 更多动漫 戳右边蓝字→Neets.cc-我老婆是学生会...
    总想取个不同的昵称阅读 5,482评论 0 0

友情链接更多精彩内容