0

我正在使用标签栏控制器创建一个 iPhone 应用程序。我有两个带有 tableview 控制器的选项卡。在这两个选项卡中都有一些 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