En iOS, ¿NSURL o NSXML abarcan un hilo nuevo?

Tengo un programa que progresa de la siguiente manera. Llamo a un método llamado getCharacteristics. Este método se conecta a un servidor remoto a través de una conexión NSURL (todo el código de red se realiza en otro archivo) y cuando recibe una respuesta, realiza una llamada de método a la clase original. Esta clase original luego analiza los datos (xml) y almacena su contenido como un mapa.

El problema que tengo es que parece que en algún lugar de esta transacción se está generando otro hilo.

Aquí hay un código de muestra que muestra lo que estoy haciendo:

@property map

- (void) aMethod
{
    [[WebService getSingleton] callWebService: andReportBackTo: self]
    Print "Ready to Return"
    return map;
}
- (void) methodThatIsReportedBackToAfterWebServiceRecievesResponse
{
    //Parse data and store in map
    Print "Done Parsing"
}

El problema con el que me encuentro es que el mapa se devuelve antes de que se pueda crear por completo. Además, "Ready to Return" se imprime antes de "Done parsing", lo que me sugiere que hay varios subprocesos en funcionamiento. ¿Tengo razón? Si es así, ¿sería una cerradura simple la mejor manera de hacer que funcione?

preguntado el 22 de mayo de 12 a las 20:05

1 Respuestas

NSURLConnection se ejecutará en otro subproceso si le indica que se ejecute de forma asíncrona.

En mi opinión, la mejor manera de lidiar con esto sería escribir su propio protocolo de delegado y usar la delegación para devolver su mapa cuando haya descargado y analizado sus datos.

Puede recuperar sus datos de forma síncrona mediante NSURLConnection, pero puede obligar al usuario a esperar un período de tiempo prolongado, especialmente si se agota el tiempo de espera de la conexión. Yo evitaría este enfoque.

contestado el 22 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.