2014-04-23 12 views
8

La nostra app contiene molte visualizzazioni Web e recentemente ho aggiunto un NSURLProtocol per intercettare alcune delle richieste da loro.NSURLProtocol canInitWithRequest: chiamato più volte

Ho notato che alcune delle viste Web stanno chiamando il metodo + [NSURLPRotocol canInitWithRequest:] più volte con quella che sembra essere esattamente la stessa richiesta. A volte 6 o 7 volte. Sto cercando di capire perché questo potrebbe accadere.

Qualcuno ha qualche esperienza con questo? Ho disconnesso i valori [NSURL absoluteString] e httpMethod e sono gli stessi per ogni richiesta. Mi aspetto che questo metodo venga chiamato una sola volta per ogni dato file o risorsa necessaria da un server, non più volte. E sembra variare per pagina web.

qualche idea?

risposta

4

Non sono esperto, ma AFAIK è un comportamento normale. [NSURLPRotocol canInitWithRequest:] può essere chiamato più volte per la stessa richiesta. Se vuoi essere avvisato solo una volta per richiesta, dovresti prenderlo nel metodo -startLoading. Ho trovato questo tutorial utile per costruire una semplice sottoclasse NSURLProtocol che farà proprio questo: http://www.raywenderlich.com/59982/nsurlprotocol-tutorial

+0

per qualche motivo startLoading viene chiamato solo dopo il problema descritto da drekka. anche se restituisco SÌ startLoading chiamato dopo tutte le richieste di chiamata su canInitWithRequest. Hai qualche idea del perché? grazie! – ElizaS

+0

L'unico suggerimento che posso dare è questo: assicurati di non avviare una connessione che è già stata avviata, in particolare se stai utilizzando NSURLConnection, dove alcuni metodi di allocazione avviano automaticamente la connessione. – dgatwood

Problemi correlati