【问题标题】:NSURLSession and NSURLProtocol issue on iOS 8iOS 8 上的 NSURLSession 和 NSURLProtocol 问题
【发布时间】:2016-06-15 12:38:49
【问题描述】:

我有一个应用程序在 iOS 9 上运行良好,自定义 NSURLProtocol 使用 NSURLSession 实现。客户端执行的所有请求也是通过NSURLSession完成的,每个sessionConfiguration在执行请求之前都在注册协议。

我在 iOS 8 上遇到了一个在 iOS 9 上没有的问题。在 iOS8 上,自定义 NSURLProtocol 正在不停地执行该请求,基本上是同一请求的无限循环。自定义协议中的canInitWithRequest: 在 iOS 8 上比在 iOS 9 上被调用更多,这基本上驱动方法 startLoading 在我的协议应该执行的一些标头修改后被调用并触发请求。

iOS8 是否存在 NSURLProtocols 和 NSURLSession 未按预期运行的已知问题?

【问题讨论】:

    标签: ios ios8 ios9 nsurlsession nsurlprotocol


    【解决方案1】:

    我不知道有任何类似的问题,没有。

    这听起来像您的协议是:

    • 由于某种原因未能检测到自己的标头修改
    • 由于某种原因未能进行修改
    • 当您的协议被问及是否应处理已包含修改后标头的请求时,未能返回 NO

    确保您使用标头字段来检测是否处理请求。无法保证您传递给机器的特定 NSURLRequest 对象会返回给您。我什至不确定我是否会信任 propertyForKey:inRequest:,但这可能会让我过于偏执。

    至关重要的是,在使用 NSURLSession 时,永远不要将 NSURLRequest 子类化。在 iOS 9 中,它几乎可以工作。你得到的越远,行为越坏,直到到 iOS 7,你几乎降级为使用 NSURLConnection。 :-)

    【讨论】:

      猜你喜欢
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2014-11-19
      • 2016-02-26
      • 1970-01-01
      • 2015-07-14
      相关资源
      最近更新 更多