Reputation: 41
Application Specific Information:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x17204b070> was mutated while being enumerated.'
Last Exception Backtrace:
0 CoreFoundation 0x0000000186acefe0 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x0000000185530538 objc_exception_throw + 56
2 CoreFoundation 0x0000000186acea30 __NSFastEnumerationMutationHandler + 128
3 UIKit 0x000000018cc22f04 -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) clearGestureRecognizers:] + 220
4 UIKit 0x000000018cc22d78 -[UITextInteractionAssistant(UITextInteractionAssistant_Internal) setGestureRecognizers] + 88
5 UIKit 0x000000018d1d1d38 -[UIGestureRecognizerTarget _sendActionWithGestureRecognizer:] + 64
6 UIKit 0x000000018d1d556c _UIGestureRecognizerSendTargetActions + 124
7 UIKit 0x000000018cd8f470 _UIGestureRecognizerSendActions + 252
8 UIKit 0x000000018cc31380 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 720
9 UIKit 0x000000018d1c5810 _UIGestureEnvironmentUpdate + 988
10 UIKit 0x000000018d1c53e0 -[UIGestureEnvironment _deliverEvent:toGestureRecognizers:usingBlock:] + 404
11 UIKit 0x000000018d1c468c -[UIGestureEnvironment _updateGesturesForEvent:window:] + 268
12 UIKit 0x000000018cc2f70c -[UIWindow sendEvent:] + 3164
13 UIKit 0x000000018cc0033c -[UIApplication sendEvent:] + 340
14 UIKit 0x000000018d3fa014 __dispatchPreprocessedEventFromEventQueue + 2400
15 UIKit 0x000000018d3f4770 __handleEventQueue + 4268
16 UIKit 0x000000018d3f4b9c __handleHIDEventFetcherDrain + 148
17 CoreFoundation 0x0000000186a7d42c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
18 CoreFoundation 0x0000000186a7cd9c __CFRunLoopDoSources0 + 540
19 CoreFoundation 0x0000000186a7a9a8 __CFRunLoopRun + 744
20 CoreFoundation 0x00000001869aada4 CFRunLoopRunSpecific + 424
21 GraphicsServices 0x0000000188414074 GSEventRunModal + 100
22 UIKit 0x000000018cc65058 UIApplicationMain + 208
23 MyApp 0x000000010001d0ac main (main.m:16)
24 libdyld.dylib 0x00000001859b959c start + 4
Upvotes: 4
Views: 6022
Reputation: 79646
There are following possible reasons for this error:
1st Reason
You may be trying to update or remove elements from an array using (inside) For Each Loop
.
Don't update or remove element inside For Each Loop
.
Use normal for loop, if you wan't data manipulation operation with your array, like:
int i
for (i=0; i < array.count; i++) {
// update or remove operation
}
2nd Reason
You are trying to modify (update or delete) element from non-mutable array. Your error message indicates, you are using Objective-C programming language.
In objective-C, there are two kinds of collections: Mutable and non-mutable.
NSArray
is non-mutable type of collection while,NSMutableArray
is mutable type of collectionUse NSMutableArray
to perform data manipulation (update or remove elements) operations with an array.
Upvotes: 7
Reputation: 4431
Sometimes, this happens in multi-thread situation. When a thread is reading an array, the other thread is trying to modify it.
In react-native component I have a native UI component, and a method in it. I did not specify which thread the method will run. So this problem happens. After I add this code, everything works find.
- (dispatch_queue_t)methodQueue {
return dispatch_get_main_queue();
}
Upvotes: 0