iPhone开发-- 崩溃之 Collection was mutated while being enumerated.的三种解决办法
崩溃提示
崩溃提示:Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection <CALayerArray: 0x14df0bd0> was mutated while being enumerated.’
原因就是在变量数组的时候,改变了数组的内容(或增或减数组中的元素)。
解决办法
方法一
再定义一个一模一样的数组B,将原数组的内容复制给数组B,再遍历数组B
let arr2 = NSArray(array: arr)
for i in arr2.enumerated() {}
方法二
创建一个串行队列,之后将对数组的操作全部放到该队列中
代码如下
_queue = dispatch_queue_create("com.app.serialQueue", DISPATCH_QUEUE_SERIAL);dispatch_async(_queue, ^{// 修改或者枚举遍历删除数组});
方法三
用锁,互斥锁和递归锁。如果逻辑稍微有点复杂,为了防止死锁,还是用递归锁吧。
let lock = NSLock()// NSRecursiveLock()
self.lock.lock(); defer { self.lock.unlock() }
参考:
- https://blog.csdn.net/feelinghappy/article/details/106664181
- https://stackoverflow.com/questions/27273211/array-was-mutated-while-being-enumerated-swift
- https://juejin.cn/post/7007983045345034247
iPhone开发-- 崩溃之 Collection was mutated while being enumerated.的三种解决办法相关推荐
- iPhone升级iOS 16后Siri无法正常工作怎么办?3种解决办法
最近,部分iPhone用户反馈升级到 iOS 16 后,Siri 和键盘听写功能无法正常工作.如果你的iPhone在更新到 iOS 16 后也遇到了Siri无法使用的问题,可以尝试以下3种解决办法. ...
- IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...
- 关于angular开发中报错Cannot find module ‘webpack/lib/node/NodeTemplatePlugin‘问题的解决办法若干
关于angular开发中报错Cannot find module 'webpack/lib/node/NodeTemplatePlugin'问题的解决办法若干 参考文章: (1)关于angular开发 ...
- 在Ubuntu下进行安卓开发遇到“insufficient permissions for device: user in plugdev group; ”问题的解决办法
开发环境:Ubuntu 16 .04 IDE:Android Studio 开发语言:Java 在接入设备进行联机调试的时候,遇到了这样的问题: insufficient permissions fo ...
- iPhone X 弹出输入框隐藏后页面上移不回位问题的解决办法
现象:简单的说就是iPhoneX页面里有输入框时,点击输入框,无论是否输入内容,点击输入框的完成或者页面其他地方隐藏输入框后,发现页面被整体顶上去了,而输入框的部分要么成黑色要么白色等,页面底部变成了 ...
- 关于谷歌浏览器全线崩溃的原因及几种解决办法(疑难杂症篇)
关于谷歌浏览器全线崩溃的原因及解决办法 写在前面 导致的可能原因 几种解决的方法 方法一 方法二 方法三 方法四 方法五 方法六 总结 写在前面 关于正在正常使用着的谷歌浏览器,突然有一回,再打开之后 ...
- Collection集合和Map集合循环遍历三种方法
Collection集合的四种遍历方式: 1.迭代器 public static void main(String[] args) {List<String> list = new Arr ...
- 微信公众号开发,报错{errcode:41005,errmsg:media data missing hint:}的解决办法---亲测有效
在微信开发中,遇到报错:errcode":41005,"errmsg":"media data missing hint 具体解决办法如下地址,实测有效: 对应 ...
- AE开发中“无法嵌入互操作类型*****,请改用适用的接口”解决办法
问题:在AE开发中遇到:"无法嵌入互操作类型*****,请改用适用的接口" 解决办法:在"项目解决方案"中找到"引用",找到报错出现的类对应 ...
最新文章
- ASP.NET 2.0 的 Event Validation
- 联想笔记本电脑的F1至F12键盘问题。怎么设置才能不按FN就使用F1
- 记录MNIST采用卷积方式实现与理解
- 【微信开发】微信公众号开发 之 编辑模式使用
- Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_3细说invokeBeanDefinitionRegistryPostProcessors
- Java黑皮书课后题第3章:3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题。修改这个程序,随机产生一个计算两个小于100的整数的加法问题
- CM: 关于删除attachment时是否需要commit work的问题
- 最小路径和Python解法
- 2020年阿里农产品电商报告
- C#中Windows Media Player控件使用实例|方法
- 总结一下切换git地址 重合代码的过程
- mysql 5.6 没死_MySQL 5.6不删空用户的影响
- Struts2的属性驱动与模型驱动的区别
- 单片机c32语言,单片机课件c32IO口.ppt
- 用Java开发手机Andriod系统Apk软件
- 码农和程序员之间的5个关键差异
- 简析内容付费趋势,问题和路径
- vb酒店管理信息系统
- 前端模块化、组件化的理解
- 批量作业调度工具 Taskctl 定时器及模块之间的区别