NSURLProtocol canInitWithRequest:多次调用

我们的应用程序中有很多的Web视图,我最近添加了一个NSURLProtocol来拦截他们的一些请求。

我注意到,一些Web视图多次调用+ [NSURLPRotocol canInitWithRequest:]方法,看起来是完全相同的请求。 有时6或7次。 我试图找出为什么这可能发生。

有人对这个有经验么? 我注销了[NSURL absoluteString]和httpMethod值,它们对于每个请求都是相同的。 我期望这个方法只会被调用一次,而不是多次从一个服务器需要的任何给定的文件或资源。 而且它似乎每个网页都有所不同。

有任何想法吗?

我不是专家,但AFAIK这是正常的行为。 对于相同的请求,可以多次调用[NSURLprotocol canInitWithRequest:]。 如果你想每个请求被通知一次,你应该在-startLoading方法中捕获它。 我发现这个教程有助于构build简单的NSURLProtocol子类,它可以做到这一点: http ://www.raywenderlich.com/59982/nsurlprotocol-tutorial