2011-04-21 22 views
16

Hola a todos, que estoy presentando un controlador de vista modal y la carga de una página web en ese controlador de vista en un UIWebView:UIWebView - accidente cuando se despedía controlador de vista modal, mientras que la solicitud está en curso

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.requestObj = [NSURLRequest requestWithURL:[NSURL URLWithString:[MPServerPrefs serverPrefs].url_of_sandwich]]; 
    [self.helpWebView loadRequest:self.requestObj]; 
} 

Todo funciona bien si Dejo que la página web se cargue y luego descarto la vista. Si Me olvido de la vista mientras se está cargando la solicitud, consigo este StackTrace:

#0 0x31a94466 in objc_msgSend 
#1 0x35ebcb70 in -[UIWebView webView:identifierForInitialRequest:fromDataSource:] 
#2 0x35ebc1c0 in -[UIWebViewWebViewDelegate webView:identifierForInitialRequest:fromDataSource:] 
#3 0x36130d04 in __invoking___ 
#4 0x36130bd4 in -[NSInvocation invoke] 
#5 0x36130730 in -[NSInvocation invokeWithTarget:] 
#6 0x329fc2f4 in -[_WebSafeForwarder forwardInvocation:] 

lo hice un poco de búsqueda y no puedo entender lo que está pasando. ¿Algunas ideas? ¿Debo cancelar mi solicitud al descartar el controlador de vista?

¡Muchas gracias!

Respuesta

38

¡Qué tonto, solo tiene que cancelar la solicitud y anular el delegado!

[self.helpWebView setDelegate:nil]; 
[self.helpWebView stopLoading]; 
+0

¿Dónde haces esto? dealloc? viewWillDisappear? – Bill

+1

@Bill - viewWillDisappear IIRC pero han pasado años desde que surgió este problema por primera vez. ¡Pruébalo y cuéntame cómo va! – Mark

+0

vieja pregunta pero deinit es el mejor lugar – CZ54

0

Su solicitud se está ejecutando en el hilo principal. ¿La solicitud hace que cuelgue tu UI? Si tiene que esperar a que finalice la solicitud antes de que se ejecute el resto del código, su usuario se preguntará qué está sucediendo mientras la vista está esperando para cargarse. Intenta ejecutar la solicitud en un hilo separado.

+0

UI does not hang. Puedo salir de la pantalla mientras se carga la solicitud que está causando este problema para que la IU no se bloquee ni cuelgue. – Mark

+1

UIWebView es parte de UIKit y, por lo tanto, debe accederse en el hilo principal, ¿no? – powerj1984

Cuestiones relacionadas