崩溃提示
崩溃提示: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.的三种解决办法相关推荐

  1. iPhone升级iOS 16后Siri无法正常工作怎么办?3种解决办法

    最近,部分iPhone用户反馈升级到 iOS 16 后,Siri 和键盘听写功能无法正常工作.如果你的iPhone在更新到 iOS 16 后也遇到了Siri无法使用的问题,可以尝试以下3种解决办法. ...

  2. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法

    在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...

  3. 关于angular开发中报错Cannot find module ‘webpack/lib/node/NodeTemplatePlugin‘问题的解决办法若干

    关于angular开发中报错Cannot find module 'webpack/lib/node/NodeTemplatePlugin'问题的解决办法若干 参考文章: (1)关于angular开发 ...

  4. 在Ubuntu下进行安卓开发遇到“insufficient permissions for device: user in plugdev group; ”问题的解决办法

    开发环境:Ubuntu 16 .04 IDE:Android Studio 开发语言:Java 在接入设备进行联机调试的时候,遇到了这样的问题: insufficient permissions fo ...

  5. iPhone X 弹出输入框隐藏后页面上移不回位问题的解决办法

    现象:简单的说就是iPhoneX页面里有输入框时,点击输入框,无论是否输入内容,点击输入框的完成或者页面其他地方隐藏输入框后,发现页面被整体顶上去了,而输入框的部分要么成黑色要么白色等,页面底部变成了 ...

  6. 关于谷歌浏览器全线崩溃的原因及几种解决办法(疑难杂症篇)

    关于谷歌浏览器全线崩溃的原因及解决办法 写在前面 导致的可能原因 几种解决的方法 方法一 方法二 方法三 方法四 方法五 方法六 总结 写在前面 关于正在正常使用着的谷歌浏览器,突然有一回,再打开之后 ...

  7. Collection集合和Map集合循环遍历三种方法

    Collection集合的四种遍历方式: 1.迭代器 public static void main(String[] args) {List<String> list = new Arr ...

  8. 微信公众号开发,报错{errcode:41005,errmsg:media data missing hint:}的解决办法---亲测有效

    在微信开发中,遇到报错:errcode":41005,"errmsg":"media data missing hint 具体解决办法如下地址,实测有效: 对应 ...

  9. AE开发中“无法嵌入互操作类型*****,请改用适用的接口”解决办法

    问题:在AE开发中遇到:"无法嵌入互操作类型*****,请改用适用的接口" 解决办法:在"项目解决方案"中找到"引用",找到报错出现的类对应 ...

最新文章

  1. ASP.NET 2.0 的 Event Validation
  2. 联想笔记本电脑的F1至F12键盘问题。怎么设置才能不按FN就使用F1
  3. 记录MNIST采用卷积方式实现与理解
  4. 【微信开发】微信公众号开发 之 编辑模式使用
  5. Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_3细说invokeBeanDefinitionRegistryPostProcessors
  6. Java黑皮书课后题第3章:3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题。修改这个程序,随机产生一个计算两个小于100的整数的加法问题
  7. CM: 关于删除attachment时是否需要commit work的问题
  8. 最小路径和Python解法
  9. 2020年阿里农产品电商报告
  10. C#中Windows Media Player控件使用实例|方法
  11. 总结一下切换git地址 重合代码的过程
  12. mysql 5.6 没死_MySQL 5.6不删空用户的影响
  13. Struts2的属性驱动与模型驱动的区别
  14. 单片机c32语言,单片机课件c32IO口.ppt
  15. 用Java开发手机Andriod系统Apk软件
  16. 码农和程序员之间的5个关键差异
  17. 简析内容付费趋势,问题和路径
  18. vb酒店管理信息系统
  19. 前端模块化、组件化的理解
  20. 批量作业调度工具 Taskctl 定时器及模块之间的区别

热门文章

  1. centos u盘安装
  2. 创新不止的伊利,引领“世界乳业看中国”
  3. 络达开发---自定义BLE服务(二):功能实现
  4. 【Scaled-YOLOv4】
  5. Hive Metastore Server实现逻辑
  6. 7-83 币值转换 (20分)
  7. 2021年电工(初级)考试题库及电工(初级)找解析
  8. Python 爬虫 百度指数
  9. asp.net ajax第一卷读后
  10. Android Studio插件Code Iris——自动生成UML类图