Espera a que el código termine de ejecutarse

Me gustaría saber la forma más fácil de esperar que el código termine la ejecución dentro de un proyecto objetivo c porque estoy llamando a un servicio web y recuperando los resultados y en su lugar está recuperando los resultados antes de que el servicio web haya terminado de ser llamado y completado.

¿Alguna sugerencia por favor?

Por cierto, este es mi código de servicio web:

    NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:tmpURl];

[theRequest addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

[theRequest addValue:@"http://tempuri.org/GetCategory" forHTTPHeaderField:@"SOAPAction"];

NSString *msgLength=[NSString stringWithFormat:@"%i",[soapMessage length]];

[theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"];

[theRequest setHTTPMethod:@"POST"];

[theRequest setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

y el código que estoy usando para llamar a este método desde la otra clase:

images = [ws callWebService:api :data];

        images = [ws returnArray];

ahora el problema es que la segunda línea se está ejecutando antes de que la primera haya terminado

Respuestas a la pregunta(2)

Su respuesta a la pregunta