OGeek|极客世界-中国程序员成长平台

标题: ios - 集合 <__NSArrayM> 在枚举时发生了变异。 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 15:28
标题: ios - 集合 <__NSArrayM> 在枚举时发生了变异。

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


Best Answer-推荐答案


这个错误可能有以下几种原因:

第一个原因

您可能正在尝试使用(内部)For Each Loop 更新或删除数组中的元素。

  • 不要更新或删除 For Each Loop 中的元素。

  • 如果您不想对数组进行数据操作,请使用普通的 for 循环,例如:

    int i
    for (i=0; i < array.count; i++) {
       // update or remove operation
    }
    

第二个原因

您正在尝试修改(更新或删除)非可变数组中的元素。您的错误消息表明,您正在使用 Objective-C 编程语言。

在 Objective-C 中,有两种集合:可变的和不可变的。

  • NSArray 是不可变的集合类型,而
  • NSMutableArray 是可变类型的集合

使用 NSMutableArray 对数组执行数据操作(更新或删除元素)。

关于ios - 集合 <__NSArrayM> 在枚举时发生了变异。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648610/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4