CALayerArray fue mutado mientras se enumeraba
Tengo que eliminar un objeto de una matriz de vez en cuando, cuando lo hago me sale este error.
La colección <CALayerArray: 0xc4f3b20> se mutó mientras se enumeraba
El error aparece en este método, que es el accesorio de la matriz:
<code>- (NSArray *)occupantsArray { if (dispatch_get_current_queue() == moduleQueue) { return occupantsArray; } else { __block NSArray *result; dispatch_sync(moduleQueue, ^{ //ON THIS LINE result = [occupantsArray copy]; }); return [result autorelease]; } } </code>
Como puede ver, estoy cuidando de no devolver la matriz original sino una copia, pero sigue fallando.
También el método donde estoy eliminando elementos de la matriz es este.
<code>- (void)eraseJIDFromArray:(NSString*)jid{ dispatch_block_t block = ^{ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int i = 0; for(NSString *jidAct in occupantsArray){ if([jidAct isEqualToString:jid]){ [occupantsArray removeObjectAtIndex:i]; } i++; } [pool drain]; }; if (dispatch_get_current_queue() == moduleQueue) block(); else dispatch_async(moduleQueue, block); } </code>
La matriz puede tener hasta 200 elementos, por lo que puede llevar algún tiempo revisarlos todos, pero estoy estableciendo colas, no sé qué más puedo hacer.
¿Algunas ideas?
Gracias.