¿Por qué no puedo cerrar o descartar una alerta de Javascript en UIWebView?

Situación: Invoco una alert Javascript a través del método stringByEvaluatingJavaScriptFromString: así …

 [myWebView stringByEvaluatingJavaScriptFromString:@"alert('FOOBAR');"]; 

Problema: iOS muestra una alerta que dice "FOOBAR" como se esperaba, pero al tocar el button "Cerrar" no se descarta la alerta.

¿Por qué no puedo cerrar la alerta de Javascript? ¿Cómo lo cierro?

Esta pregunta me dio la mayor idea del problema …

Interlocking con GCD y webView

Lo esencial es que el hilo que maneja el JS desde el método stringByEvaluatingJavaScriptFromString: y el hilo que maneja la vista de alerta de iOS probablemente se bloqueen entre sí, haciendo que el button "Cerrar" no responda.

Mi solución es aplazar la alert JS con un setTimeout , algo así …

 NSString *jsMyAlert = @"setTimeout(function(){alert('FOOBAR');}, 1);"; [myWebView stringByEvaluatingJavaScriptFromString:jsMyAlert]; 

Para evitar cualquier riesgo de interlocking, podría ser mejor hacer que el desencadenador de UIAlertView un UIAlertView lugar de confiar en UIWebView para manejar la alert JS. La solución anterior sería adecuada para la mayoría de los propósitos de debugging.