2014-02-17 26 views
0

來我有時會收到此錯誤:如何識別其中「同時列舉NSArrayM突變」是從

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

我的理解,同時採用快速枚舉,我突變數組,但我可以不知道如何識別其中這個問題正在發生。堆棧跟蹤告訴我什麼都沒有,除了隨機設置斷點和猜測,直到找到它,我找不出一個好的方法來消除這種情況。

是否有某種斷點魔法我可以這樣做編譯器顯示我在哪裏發生這種情況?或者我可以使用NSZombies以某種方式識別此?任何幫助將非常感激。

+1

查看你的代碼,你有快速枚舉塊中的'addObject'或'removeObject'和類似方法 – Merlevede

+0

請參閱http://www.raywenderlich.com/10209/my-app-crashed-now-what-part -1 – rmaddy

+0

@Merlevede,事情並不那麼簡單。我有一個遊戲,在更新循環期間操縱節點,並且這些節點有孩子,孫輩等等。確切地確定這種情況在哪裏很難確定。 – Mike

回答

4

瞭解如何設置異常斷點:

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

但在最新的Xcode,你只需要做下列步驟操作:

In the bottom-left corner of the breakpoints navigator, click the Add button.

Choose Add Exception Breakpoint.

然後得到這個斷點導航

enter image description here

當拋出異常而不是被捕獲時,您的代碼現在會中斷。您應該能夠導航調用堆棧以查看代碼中發生異常的位置。

+0

我覺得這是我很久以前應該理解的東西。不過謝謝你。這正是我所期待的。 – Mike

相關問題