【发布时间】:2014-02-17 23:55:01
【问题描述】:
我有时会收到此错误:
*** Terminating app due to uncaught exception 'NSGenericException', reason:
'*** Collection <__NSArrayM: 0x170057580> was mutated while being enumerated.'
我知道我在使用快速枚举时改变了一个数组,但我不知道如何确定这个问题发生在哪里。堆栈跟踪完全没有向我显示任何内容,除了随机设置断点并猜测直到找到它之外,我无法找到一个很好的方法来确定发生这种情况的位置。
我可以使用某种断点魔法让编译器告诉我发生这种情况的位置吗?或者我可以使用 NSZombies 以某种方式识别它吗?任何帮助将不胜感激。
【问题讨论】:
-
查看你的代码,你有
addObject或removeObject以及快速枚举块中的类似方法 -
@Merlevede,事情并没有那么简单。我有一个游戏,其中节点在更新循环期间被操纵,这些节点有孩子、孙子等等。很难确定发生这种情况的确切位置。
标签: ios objective-c