Per quanto mi ricordo, quel segnale spuntato quando un Webview ricevuto un aggiornamento (per esempio, una risposta da un'immagine incorporata), ma non potrebbe essere resa perché non è usato dal thread principale più. Ciò significa che quando ViewController non viene visualizzato.
Se questo è il caso, si dovrebbe essere in grado di riprodurre il problema caricando una pagina web con contenuti pesanti (ad esempio, qualche giornale online come http://edition.cnn.com/) e respingendo il WebView subito dopo l'avvio del carico, spingendo/popping un'altra ViewController.
Come risolvere il problema: infatti, è necessario chiamare i metodi che hai menzionato:
webview.delegate = nil;
[webview stopLoading];
Tuttavia, il posto per farlo è il metodo viewWillDisappear
, mai dealloc
. Il motivo è semplice: viewWillDisappear
viene chiamato nel momento esatto in cui il ViewController sta per perdere il controllo del thread principale. Tuttavia, dealloc
viene chiamato quando VC sta per essere rilasciato nell'heap. Questo potrebbe accadere alcuni secondi dopo, dando all'app un po 'di tempo prezioso per andare in crash, o forse non verrà mai chiamato. Spostare entrambi i metodi dovrebbe fare il trucco.
Quale versione iOS stai rivolge? Dove stai chiamando 'webview.delegate = nil' e' [webview stopLoading] '? – JAL
Mi rivolgo a iOS7 +. Probabilmente la prossima versione avrà 8+. delegate = nil è chiamato in dealloc. stopLoading viene chiamato in viewWillDisappear. – Division
Sono abbastanza sicuro che si tratta di un bug interno del webkit (che è apparso su iOS 7 ma è stato corretto con iOS 8) dove la soluzione ufficiale di Apple sarà "l'aggiornamento a iOS 8." Cercherò anche di cambiare ovunque tu stia chiamando 'webview.delegate = nil' e' [webview stopLoading] ', prova a chiamarlo in' viewWillDisapear' o 'dealloc'. Le statistiche – JAL