CALayerArray wurde während der Aufzählung mutiert

Ich muss hin und wieder ein Objekt eines Arrays löschen, wenn ich es tue, erhalte ich diesen Fehler.

Die Auflistung <CALayerArray: 0xc4f3b20> wurde während der Aufzählung mutiert

Der Fehler tritt bei dieser Methode auf, bei der es sich um den Zugriff auf das Array handelt:

<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>

Wie Sie sehen können, kümmere ich mich darum, nicht das ursprüngliche Array, sondern eine Kopie zurückzugeben, aber es stürzt immer noch ab.

Dies ist auch die Methode, mit der ich Elemente des Arrays lösche.

<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>

Das Array kann bis zu 200 Elemente enthalten, daher kann es einige Zeit dauern, bis alle Elemente abgearbeitet sind. Ich stelle jedoch Warteschlangen ein und weiß nicht, was ich sonst noch tun kann.

Irgendwelche Ideen?

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage