我已经在这几天了,几天前问了这个问题。我认为最好更清楚地重新表述这个问题。
我在 UINavigationController 中有一系列 UICollectionViewController。每次用户进行选择时,屏幕上都会推送一个新的集合视图,该集合视图负责从 API 获取其内容。
有时此时会发生崩溃。每次的例外情况都不同。通常,它是以下之一:
*** Collection <NSConcreteMapTable: 0x1922cf60> was mutated while being enumerated.
或者
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSSetM: 0x203f26b0> was mutated while being enumerated.'
有时它甚至不会抛出异常,但程序会在“空线程”中暂停error: address doesn't contain a section that points to a section in a object file
。最后,当一个项目被选中,新的视图被按下,然后当它出现时快速按下后退按钮时,这个错误更一致地重现。但它也可能在没有按下后退按钮的情况下发生。
我附加了我自己的未捕获异常处理程序以打印出堆栈跟踪。在所有情况下,我自己的课程都没有在跟踪中。
我设置了“异常中断”,但它永远不会在任何有意义的地方停止——通常是一些仅读取trap
或在 UIApplicationMain 中的不起眼的汇编代码。
所以我的问题是:我什至从哪里开始调试呢?
如果有帮助,我可以发布一个堆栈跟踪的示例。