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.