2014-04-23 75 views
8

我們的應用程序有很多在它網站的觀點和我最近增加了一個NSURLProtocol以攔截從一些他們的請求。NSURLProtocol canInitWithRequest:多次調用

我注意到,一些網絡意見調用+ [NSURLPRotocol canInitWithRequest:]法似乎是一模一樣的請求多次。有時6或7次。我試圖弄清楚爲什麼會發生這種情況。

有沒有人有這方面的經驗?我註銷了[NSURL absoluteString]和httpMethod值,它們對於每個請求都是相同的。我期望這種方法只會被調用一次,而不是多次從服務器中獲取任何給定的文件或資源。它似乎每個網頁都有所不同。

有什麼想法?

回答

4

我不是專家,但據我所知,這是正常的行爲。對於同一請求,可能會多次調用[NSURLprotocol canInitWithRequest:]。如果您希望每個請求只收到一次通知,則應該使用-startLoading方法將其捕獲。我發現這個教程有助於構建簡單NSURLProtocol子類,將做到這一點:http://www.raywenderlich.com/59982/nsurlprotocol-tutorial

+0

由於某種原因startLoading僅由drekka描述的問題後調用。 即使我回到YES startLoading調用後的所有請求上canInitWithRequest調用。 你知道爲什麼嗎? 謝謝! – ElizaS

+0

我可以給出的唯一提示是:確保你沒有啓動已經啓動的連接 - 特別是如果你使用NSURLConnection,其中一些分配方法自動啓動連接。 – dgatwood