Mi cliente de iPhone tiene una gran cantidad de solicitudes asincrónicas, la mayoría de las veces modifica constantemente las colecciones estáticas de diccionarios o matrices. Como resultado, es común para mí ver las estructuras de datos más grandes que tardan más en recuperar de un servidor con los siguientes errores:Uso de iPhone de mutexes con solicitudes de URL asíncronas
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <NSCFArray: 0x3777c0> was mutated while being enumerated.'
lo general, esto significa que dos peticiones al servidor volver con los datos que están tratando de modificar la misma colección Lo que estoy buscando es un tutorial/ejemplo/comprensión de cómo estructurar correctamente mi código para evitar este error perjudicial. Creo que la respuesta correcta son mutexes, pero nunca los he usado personalmente.
Esto es el resultado de realizar solicitudes HTTP asincrónicas con NSURLConnection y luego usar NSNotification Center como medio de delegación una vez que se completan las solicitudes. Al disparar solicitudes que cambian los mismos conjuntos de recopilación, obtenemos estas colisiones.
El problema es que los hilos 'de fondo' no los he creado explícitamente. Son el resultado de solicitudes de NSURLConnection asincrónicas. No tengo forma de hablar con el hilo principal a través del código. Sus otras sugerencias son útiles y lo agradezco. – Coocoo4Cocoa
Creo que se llamará al delegado de NSURLConnection en el hilo que inició la operación de carga, no necesariamente en el hilo que creó el objeto. Para que pueda unir los datos en sus métodos de delegado. – sbooth
¡Sí! gracias, funciona para mi – Armanoide