从服务器获取一些数据时出现以下错误。在获取数据时,我显示带有活动指示符的自定义警报视图。警报正在使用主线程,而数据获取由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'实例后终止调用
答案 0 :(得分:2)
问题在于您的代码的一部分,您使用object
(NSMutableArray
)列举了一些NSMutableSet
,例如for-loop
或for (id _obj in object)
,在该循环中删除或添加一些对象到同一object
。这是不可能的,并导致exception
。
您可以使用索引变量将for循环替换为for循环:
for (int i=0; i<[object count]; i++)
{
//add or remove objects if you want
}