如何确定“枚举时NSArrayM发生变异”的来源

时间:2014-02-17 15:43:54

标签: ios objective-c

我有时会收到此错误:

*** Terminating app due to uncaught exception 'NSGenericException', reason: 
'*** Collection <__NSArrayM: 0x170057580> was mutated while being enumerated.'

我知道我在使用快速枚举时正在改变数组,但我无法弄清楚如何识别 where 这个问题。堆栈跟踪绝对没有显示任何内容,除了随机设置断点和猜测,直到找到它,我无法找到一个很好的方法来消除这种情况。

我可以做某种断点魔术,编译器会告诉我这发生了什么吗?或者我可以使用NSZombies以某种方式识别这个?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

了解如何设置异常断点:

https://developer.apple.com/library/ios/recipes/xcode_help-breakpoint_navigator/articles/adding_an_exception_breakpoint.html

但是在最新的Xcode中你只需要执行以下步骤:

  

在断点导航器的左下角,单击“添加”按钮。

     

选择Add Exception Breakpoint。

然后在断点导航器

中获取此信息

enter image description here

现在,您的代码将在抛出异常时而不是在捕获异常时中断。您应该能够导航调用堆栈,以查看代码中发生异常的位置。