1

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

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

iOS8 是否存在已知问题,其中NSURLProtocols 和NSURLSession不按预期运行?

4

1 回答 1

0

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

这听起来像您的协议是:

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

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

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

于 2016-05-08T02:19:28.610 回答