CALayerArray sofreu uma mutação ao ser enumerado
Eu tenho que excluir um objeto de uma matriz de vez em quando, quando eu faço isso eu recebo esse erro.
A coleção <CALayerArray: 0xc4f3b20> sofreu uma mutação ao ser enumerada
O erro aparece neste método, que é o acessor do Array:
<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 você pode ver, eu estou cuidando de não retornar a matriz original, mas uma cópia, mas ela ainda falha.
Também o método em que estou excluindo elementos da matriz é isso.
<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>
O array pode ter até 200 elementos, então pode levar algum tempo para percorrer todos eles, mas estou configurando filas, não sei o que mais posso fazer.
Alguma ideia?
Obrigado.