0

タブバーコントローラーでiPhoneアプリケーションを作成しています。テーブルビューコントローラーを備えた2つのタブがあります。両方のタブにいくつかの Web サービス呼び出しがあり、テーブルの内容が更新されます。ローディング インジケーターを使用しており、すべてのサービス呼び出しはバックグラウンド スレッドで実行され、UI の更新はメインスレッドで実行されますwaitUntilDone:YES。通常、すべてが完璧に機能しています。

しかし、問題は、タブの突然の変更を繰り返し行うと、アプリがエラー メッセージでクラッシュすることです。

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x382a62a3 0x3338d97f 0x381f1b75 0x1521f9 0x362fb545 0x362e030b 0x362f77c7 0x362b3803 0x312d1d63 0x312d1901 0x312d2835 0x312d221b 0x312d2029 0x362b98eb 0x3827b6cd 0x382799c1 0x38279d17 0x381ecebd 0x381ecd49 0x3a0ec2eb 0x363042f9 0xcd317 0xc0b70)
libc++abi.dylib: terminate called throwing an exception

コンテンツのない NSArray から値にアクセスしようとするためです。しかし、これには共通の理由がありますか?つまり、通常の速度でタブの変更を行う場合、問題はありません。しかし、タブを変更しようとすると、読み込みインジケーターが終了した直後にアプリがクラッシュします。コードでこれを追跡することはできません。でクラッシュが発生していますmain.m

あなたのアイデアを共有してください。

アップデート

問題が発生していた

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

   songTitle.text = [songTitleSH objectAtIndex:indexPath.row];
    albumTitle.text = [albumNameSH objectAtIndex:indexPath.row];
    artistName.text = [artistNameSH objectAtIndex:indexPath.row];
    commentDateLbl.text = [playDateSH objectAtIndex:indexPath.row];

これらの配列で NULL 値を取得しているため、問題が発生しました。では、どうすればこの問題を克服できますか? 何か案が?

4

0 に答える 0