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かのオブジェクトを同じ に削除または追加します。出来ない原因となります。NSMutableSetfor-loopfor (id _obj in object)objectexception

インデックス変数を使用して、その for ループを for ループに置き換えることができます。

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