CALayerArray został zmutowany podczas wyliczania

Muszę co jakiś czas usuwać obiekt tablicy, gdy to robię, otrzymuję ten błąd.

Kolekcja <CALayerArray: 0xc4f3b20> została zmutowana podczas wyliczania

Błąd pojawia się w tej metodzie, która jest elementem 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>

Jak widzisz, zajmuję się nie zwracaniem oryginalnej tablicy, ale kopią, ale nadal się zawiesza.

Jest to również metoda, w której usuwam elementy tablicy.

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

Tablica może mieć do 200 elementów, więc przejrzenie ich wszystkich może zająć trochę czasu, ale ustawiam kolejki, nie wiem, co jeszcze mogę zrobić.

Jakieś pomysły?

Dzięki.

questionAnswers(1)

yourAnswerToTheQuestion