2011-10-24 20 views
0

從服務器獲取一些數據時,我得到了下面的錯誤。在獲取數據時,我會顯示帶有活動指示器的自定義警報視圖。警報正在使用主線程,而數據讀取則由NSThread完成。此問題僅在某個時間發生,並非總是如此。我無法理解要做什麼。應用終止 - 未捕獲的異常'NSGenericException',

*終止應用程序由於未捕獲的異常 'NSGenericException',原因是: '*收集突變而被枚舉( 「」, 「」, 「」 )。'

*在第一擲調用堆棧: (

0 CoreFoundation      0x00f2abe9 __exceptionPreprocess + 185 
1 libobjc.A.dylib      0x0107f5c2 objc_exception_throw + 47 
2 CoreFoundation      0x00f2a6a9 __NSFastEnumerationMutationHandler + 377 
3 UIKit        0x00371b8e -[UIView(Hierarchy) _findFirstSubviewWantingToBecomeFirstResponder] + 189 
4 UIKit        0x00366a13 -[UIView(Hierarchy) _promoteDescendantToFirstResponderIfNecessary] + 42 
5 MyApplnName      0x00015154 -[SecondViewController getDataFromServer] + 1798 
6 Foundation       0x000a1d4c -[NSThread main] + 81 
7 Foundation       0x000a1cd8 __NSThread__main__ + 1387 
8 libSystem.B.dylib     0x928db7fd _pthread_start + 345 
9 libSystem.B.dylib     0x928db682 thread_start + 34 

扔在那裏你列舉一些object,例如,NSMutableArrayNSMutableSet,使用for-loopfor (id _obj in object))的「NSException」

+0

我是不是一個客觀的-C專家,但是從看錯誤消息,我瓦納問:在你的代碼是你做的事情就像'集合中的foreach項目'一樣,同時修改循環體中的集合? – Ankur

+0

顯示代碼。 – macbirdie

回答

2

的問題是在你的代碼的一部分的實例後,在該循環刪除或添加一些終止叫對象相同object。這是不可能的,並導致exception

您可以替換for循環與循環利用指標變量:

for (int i=0; i<[object count]; i++) 
{ 
    //add or remove objects if you want 
} 
+0

不,我不會從for循環中刪除任何對象。我實際上做的是1.我在for循環2中創建一個對象。如果它不是Nil,則將其添加到一個字典中,然後將該對象添加到數組中。 – JiteshW

+0

您是否看了我的帖子? >該循環刪除或**添加**一些對象 – Nekto

+0

對不起,以上帖子。我明白了,我現在改變了我的代碼和工作。 – JiteshW

相關問題