NSArray或者NSMutableArray常见错误was mutated while being enumerated

Objective-C 2.0运行时与Cocoa Foundation底层原理深度解析 Objective-C 2.0并非过时语法,而是macOS/iOS系统级契约的运行时基石。其核心在于动态消息转发(objc_msgSend)、内存管理协议(autorelease pool、weak引用)、属性合成机制(@dynamic/@synthesize)及KVC/KVO元编程能力——这些共同构成Foundation框架的底层支撑。理解isa指针、方法缓存(cache_t)、关联对象(objc_setAssociatedObject)和类型编码(@encode)等机制,是调试Swift桥接异常、Cor 阅读详情
在IOS开发中,我们经常用的NSArray或者NSMutableArray ,但是当使用不当的时候,会有下面的错误提示。

Collection <__NSArrayM: 0xxxxxxx> was mutated while being enumerated.

遇到这类错误的时候,是同时对同一个数组进行了操作。
*这里说的是数组,其实别的类型的对象也出现这个问题,如:NSDictionary等*

下面一个简单的出现这类错误的用法:

    NSMutableArray * arrayTemp = xxx;   

    for (NSDictionary * dic in arrayTemp) {        

        if (condition){            
            [arrayTemp removeObject:dic];
        }       
    }
应该改为:

    NSMutableArray * arrayTemp = xxx; 

    NSArray * array = [NSArray arrayWithArray: arrayTemp];  

    for (NSDictionary * dic in array) {        

        if (condition){            
            [arrayTemp removeObject:dic];
        }       
    }
<pre name="code" class="objc">//forin 循环中的便利内容不能被改变, 是因为如果改变其便利的内容会少一个, 而系统是不会允许这个发生的所以就会crash...但是当改变最后一个的内容时, 就不会crash, 是因为此时遍历已经结束, 结束之后对内容做修改是允许的

在对数组内容进行改变的时候,要灵活使用备份数组。


【车辆仿真】从0开始建立dSPACE RT Simulink工程:CAN通信(RTICANMM方法) 【工程环境信息】:本文基于链接文章搭建SCALEXIO Rack RTPC总线节点,用于与AutoBox通信硬件:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):AutoBox (DS1006)板卡:DS6342软件:本文所使用的DBC链接提示:以下是本篇文章正文内容,下面案例可供参考!!!的部分一定记得配置,其他的按需配置RTICANMM的灵活度非常高,尽可能参考Help文档,理解相应的配置内容官方有RTICANMM的样例工程,在下方路径。 阅读详情

相关推荐

安检机图像处理避坑指南:从条纹校正到物质分类,那些论文里没写的工程细节

本文深入探讨了双能X射线安检机图像处理中的关键工程实践,从条纹校正到物质分类,揭示了论文中未提及的实用技巧。针对探测器校正、物质分类模糊、伪彩色系统设计等核心问题,提供了动态参数更新、空间上下文分析和自适应色彩映射等解决方案,助力提升安检系统的准确性和鲁棒性。

weixin_30325487的博客 887

nsarray was mutated while being enumerated

在遍历数组过程中,找到要删除的元素并删除的时候会报错

晓鱼儿的专栏 1177

全国30米分辨率逐年植被覆盖度(FVC)数据集

植被覆盖度是描述地表植被的重要参数与生态环境的基本指标,在大气圈、土壤圈、水圈和生物圈中都占据着重要的地位,区域及全球范围的植被覆盖度估算对植被及相关领域的研究具有重要意义。分别对LANDSAT 5/7/8系列数据计算FVC,其中Landsat5 和Landsat 7NDVI计算利用 B4和B3波段,Landsat8 和Landsat9 NDVI计算利用 B5和B4波段。算法从当年所有观测数据中,以低云、低探测角度和最高NDVI值为标准,选择最佳的可用像元值,并进行换算。(3) FVC的计算。

地球资源数据云的官方博客 1808

iPhone开发-- 崩溃之 Collection was mutated while being enumerated.的三种解决办法

崩溃提示:Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection was mutated while being enumerated.’如果逻辑稍微有点复杂,为了防止死锁,还是用递归锁吧。原因就是在变量数组的时候,改变了数组的内容(或增或减数组中的元素)。再定义一个一模一样的数组B,将原数组的内容复制给数组B,再遍历数组B。

zcl369369的专栏 1418

【STM32-DSP库的使用】基于Keil5 + STM32CubeMX + CMSIS-DSP 手动添加、库添加方式

CMSIS-DSP库在工程中应用遇到的所有问题进行归纳终结

洋洋的博客 1万+

国产大模型编程能力深度分析报告(2026年5月更新版)

2026年5月国产大模型编程能力报告显示,主流模型迎来重大升级。DeepSeek V4以1.6T参数创性能新高,Qwen3.6-Plus支持原生多模态编程,MiniMax M2.7转向闭源并优化Agent编码,Kimi K2.6成为商业化成熟的主力模型,GLM-5开源并涨价30%。阿里云百炼推出双轨订阅体系,区分团队和个人开发者需求。各模型在参数规模、上下文长度、性能表现和适用场景上各具优势,国产AI编程服务正加速向订阅制转型,成本效益显著提升。

Willin Wang 的全栈升级指南 1644

was mutated while being enumerated

翻译: "在枚举的时候发生了变化" for...in...利用了快速枚举NSFastEnumerate,当我们想要改变数组变量中的数据或者删除数组中的数据的时候,不能用for...in... Objective-C中的foreach循环与Java中的类似,在内部是用iterator(迭代器)实现遍历的。而不管是在Java还是C++中,一旦修改了被遍历对象,在修改前生成的iterator都会失效

fellow_gengxj的博客 745

如何打开本地网络的防火墙端口(Windows版)解决ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。问题

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 最开始在遇到这个报错的时候十分不解,后来经过思考,有可能是服务器端口占用,或者并没有放行。因此搜查问题的关键是要先去排查问题。 在搜索栏输入控制面板 选择防火墙 选择开关 保证这些选项是开着的 选择高级设置 新建规则 创建协议端口 选择端口 允许连接 点击下一步 创建规则后点击下一步(后命名) 选择任意端口ALL即可 问题排查完毕!socket创建网络通信时,有读者

weixin_46900108的博客 9万+

was mutated while being enumerated数组遍历时被修改

当我们用for in遍历数组时,程序会Crash 原因:在遍历时,数组不允许被修改 解决办法: 1.使用for循环遍历,也是最基础的遍历,这种算法是遍历整个数组,然后定位要删除的元素 2.如果要使用for in遍历,需要定义一个新的数组(复制原数组)NSMutableArray *copyArray = [NSMutableArray arrayWithArray:array]; 在遍

夏目三三 784

面向口齿不清者的语音识别新突破:用大模型拯救“听不懂”的声音

面向构音障碍患者的语音识别新突破:大语言模型显著提升识别准确率 国际语音研究团队在Interspeech 2025发表最新成果,通过将大语言模型(LLM)融入语音识别系统,显著改善了对构音障碍(dysarthria)患者语音的识别效果。研究表明: 传统语音识别(如CTC模型)对构音障碍语音的词错误率(WER)高达50-54%,Whisper模型降至38-40%。 引入LLM解码器后,BART模型将WER降至30-32%,而Whisper-Vicuna组合更将WER降低至21-26%。 关键优势:LLM能有效

帅小柏的博客 270

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(二)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 575

iOS_报错"Collection NSArrayM was mutated while being enumerated"

在通讯录搜索时会不停的遍历数组源,获取匹配的用户信息用于展示,此时出现BUG。报错:崩溃并报错“Collection &lt;__NSArrayM: 0x166105d0&gt; was mutated while being enumerated”。原因1:数组遍历时修改了数组。解决方法:定义一个新数组,修改新数组原因2:不同的线程同时读取和修改了数组。解决方法: [userList enume...

jacob_ios的博客 1943

Kappa函数:测量一致性并计算置信区间的R语言包

Kappa函数是一种常用的统计量,用于衡量两个评估者之间的一致性。在R语言中,有一个名为"vcd"的包提供了计算Kappa函数以及相应的置信区间的功能。本文将介绍如何使用"vcd"包来计算Kappa函数的值,并进一步计算置信区间。Kappa函数的值介于-1和1之间,值越接近1表示评估者之间的一致性越高,值越接近-1表示评估者之间的一致性越低,值接近0表示评估者之间的一致性接近于随机。通过以上步骤,我们成功地使用R语言中的"vcd"包计算了Kappa函数的值和置信区间。接下来,我们可以使用"vcd"包中的。

2301_79331230的博客 1875

ios was mutated while being enumerated.

在IOS开发中,我们经常用的NSArray或者NSMutableArray ,但是当使用不当的时候,会有下面的错误提示。 Collection NSArrayM: 0xxxxxxx> was mutated while being enumerated. 遇到这类错误的时候,是同时对同一个数组进行了操作。 *这里说的是数组,其实别的类型的对象也出现这个问题,如:NSDic

robinson_911的专栏 1150

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Collection <__NSArrayM: 0xxxxxxx> was mutated while being enumerated.

在IOS开发中,我们经常用的NSArray或者NSMutableArray ,但是当使用不当的时候,会有下面的错误提示。 Collection NSArrayM: 0xxxxxxx> was mutated while being enumerated. 遇到这类错误的时候,是同时对同一个数组进行了操作。 *这里说的是数组,其实别的类型的对象也出现这个问题,如:NSDic

u011862058的专栏 1419

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Bug-iOS】Collection <__NSArrayM: 0x> was mutated while being enumerated.

NSMutableArray *mArr = [NSMutableArray array]; for (int i = 0; i < 10; i ++) {     NSMutableDictionary *mDic = [NSMutableDictionary dictionary];     [mDic setObject:[NSString stringWithFormat:@

Wing_n的博客 968

【学习ios之路:Objective-C错误】Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.

错误提示: 产生错误的原因: 当程序在执行遍历时,同时又修改数组中的内容,导致崩溃. 解决方法如下: 方法1:定义一个一模一样的数组,遍历新数组的同时,对原数组进行操作修改. 例如:NSMutableArray *arrayTemp = [@[@"aa",@"vv",@"bb"] mutableCopy]; NSArray *array = [NSArray arrayW

Forever_YouSay 2282

异常Crash之 NSGenericException,NSArray was mutated while being enumerated

  *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x17542520> was mutated while being enumerated.'   从字面上不难理解,Crash的原因在于我们一边遍历数组,一边修改该数组...

weixin_34355881的博客 150

【转】was mutated while being enumerated 你是不是以为你真的懂For...in... ??

原文网址:http://www.jianshu.com/p/ad80d9443a92 支持原创,如需转载, 请注明出处你是不是以为你真的懂For...in... ??哈哈哈哈, 我也碰到了这个报错 .究其原因, 顾名思义 "在枚举的时候发生了变化"for...in...利用了快速枚举NSFastEnumerate当我们想要改变数组变量中的数据或者删除数组中的数据的时候,不能用for....

weixin_30826095的博客 77

解决Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.-

2013-09-22 16:45:42.229 ViewTest[2638:c07] *** Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection was mutated while being enumerated.’ 当程序出现这个提示的时候,是因为你一边便利数组,

xiaotou1991的专栏 877

Collection <__NSCFDictionary: 0xc425570> was mutated while being enumerated.

解决方法1:     // 保存搜索记录     for (int i = 0; i _muArrayData.count; i++) {        // 去掉重复的历史记录         NSString *stringText = _muArrayData[i];         if ([stringText isEqualToString:self.search

天道酬勤 959

<__NSArrayM: 0xb550c30> was mutated while being enumerated.

错误的意思是指我们正在一边遍历数组中的元素,又一边修改其中的值. NSMutableArray * arrayTemp = xxx; NSArray * array = [NSArray arrayWithArray: arrayTemp]; for (NSDictionary * dic in array) { if (condition){ [arrayTemp r

12345789 1222

was mutated while being enumerated. 解决方法

当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃,网上的方法如下: NSMutableArray * arrayTemp = xxx;   NSArray * array = [NSArray arrayWithArray: arrayTemp];   for (NSDictionary * dic in array) {

Logan_017的空间 4594

Collection <__NSArrayM: 0x> was mutated while being enumerated.

这个问题是因为在遍历数组的时候对数组元素进行了修改,我是在遍历的时候删除了元素,然后就报错了。 通过查资料找到两个解决方案: 1.创建一个一样的数组,对新数组进行遍历,然后对原来的数组进行修改或删除。 2.通过枚举的方式进行遍历[array enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnul

Bright 1796

iOS - 解决was mutated while being enumerated

reason: '*** Collection <__NSArrayM: 0x610000253e30> was mutated while being enumerated.'原因:在遍历数组的同时删除了数组中的元素 OC语法规定,不能在遍历数组的时候删除数组中的元素 解决方案例如下面的代码,在遍历images的时候删除了images中的元素for (UIImage *image in self

LinXunFeng的博客 4287
上一篇: NSMutableString,可变字符串,拼接,删除,插入,替换
下一篇: OC第四节NSArray,NSMutableArray,NSNumber总结
vaercly
博客等级 码龄12年 46粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值