UIAlertView comienza a aparecer, la pantalla se atenúa, ¡pero no aparece hasta que es demasiado tarde!

Tengo un botón que cuando se presiona hace llamadas que cargan información de una serie de URL (aproximadamente 5 segundos de tiempo de carga). Justo antes de hacer esas llamadas, quiero agregar una alerta de "carga". Cuando uso un UIAlertView, la pantalla se atenúa como si estuviera a punto de aparecer, pero no lo hace hasta que se cargan los datos, ¡demasiado tarde! No tengo idea de lo que está sucediendo, es como si las llamadas que estoy haciendo para cargar los datos tengan preferencia inmediata sobre mostrar la nueva vista, a pesar de que se realizan justo después de que las llamadas agreguen la nueva vista (o muestren la alerta) . Esta es una versión resumida del código:

-(void) refresh{
   UIAlertView *av = ...
   [av show]; //this should pop up before dat begins to load
   [myDataSource loadData]; //this contains a series of [NSData initWithURL] calls
   [self.tableView reloadData];
   //here I would hide the AlertView, but if I do I see it for just s split second
   //when the tableView has already reloaded
} 

¡Gracias de antemano por cualquier información

*** EDITAR A cualquiera que use performSelectorInBackground, tenga cuidado con las complejidades adicionales de crear lo que efectivamente es un programa enhebrado. Por ejemplo, pueden aparecer fugas ya que el nuevo hilo no tiene un grupo de liberación automática; debe agregar uno, etc.

Respuestas a la pregunta(3)

Su respuesta a la pregunta