0

从服务器获取一些数据时出现以下错误。在获取数据时,即时显示带有活动指示器的自定义警报视图。警报正在使用主线程,而数据获取由 NSThread 完成。此问题仅在某个时间发生,并非总是如此。我无法理解该怎么做。

* 由于未捕获的异常“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

)

在抛出“NSException”实例后调用终止

4

1 回答 1

2

问题出在您的代码的一部分中,您在其中枚举了一些object,例如,NSMutableArray或者NSMutableSet,使用for-loop( for (id _obj in object)) 并在该循环中删除或添加一些对象到相同的object. 这是不可能的和原因exception

您可以使用索引变量将 for-loop 替换为 for-loop:

 for (int i=0; i<[object count]; i++)
 {
    //add or remove objects if you want
 } 
于 2011-10-24T06:03:25.707 回答