IOS 应用程序因 [UITableView reloadData] 而崩溃

标签 ios uitableview reloaddata

我的应用程序崩溃并显示以下错误。

线程 0 崩溃:

0   libobjc.A.dylib                 0x3b5d7b26 objc_msgSend + 6

1   UIKit                           0x339c74f4 -[UIResponder(Static) _setFirstResponder:] + 40

2   UIKit                           0x339c74f4 -[UIResponder(Static) _setFirstResponder:] + 40

3   UIKit                           0x339b3000 -[UIResponder resignFirstResponder] + 248

4   UIKit                           0x339e4e9c -[UITableView reloadData] + 224

5   CSModule                        0x001588e2 -[UIBubbleTableView reloadData] 

我尝试解决问题但没有得到解决方案。请帮我解决这个问题。

我已经在表格单元格 View 上创建了一个带有标签的自定义 View ,当我们点击该自定义 View 时,它会显示一个带有复制选项的 UIMenuController。我的自定义 View 处理点击手势如下

-(void) handleTapGesture:(UIGestureRecognizer*) recognizer{

    if (self.window == nil) {
        NSLog(@" \n\n\n\n Window is null \n\n\n\n\n\n");
        return;
    }

    [self becomeFirstResponder];

    CGRect targetRectangle = CGRectMake(self.bounds.size.width/2, 2, 2, 2);

    UIMenuController *menuController = [UIMenuController sharedMenuController];
    [menuController setTargetRect:targetRectangle inView:self];
    [menuController setMenuVisible:YES animated:YES];
} 

如果我没有处理点击手势并且没有显示这个 UIMenuController ,那么它不会产生任何崩溃。

崩溃是随机发生的,我在 UITableView 中实现了拉动刷新,拉动时我从服务器下载以前的数据并重新加载 tableview,同时我点击单元格中的自定义 View ,有时会发生崩溃。

还有一件事有时会在 handleTapGesture 函数中发生崩溃,如下所示。

线程 0 崩溃:

0 libobjc.A.dylib 0x3b5d7b26 objc_msgSend + 6

1 UIKit 0x339c74f4 -[UIResponder(Static) _setFirstResponder:] + 40

2 UIKit 0x339c74f4 -[UIResponder(Static) _setFirstResponder:] + 40

3 UIKit 0x339c74f4 -[UIResponder(Static) _setFirstResponder:] + 40

4 UIKit 0x339b2f92 -[UIResponder resignFirstResponder] + 138

5 UIKit 0x3398d958 -[UIResponder becomeFirstResponder] + 308

6 UIKit 0x3398dc46 -[UIView(Hierarchy) becomeFirstResponder] + 102

7 CSModule 0x0006ceb2 -[UIChatFootageTextView handleTapGesture:]

请如果您有任何解决问题的想法,请帮助我解决它。

最佳答案

FWIW,我注意到我在 ios8 GM 上的应用程序存在同样的问题。问题似乎是,如果您在没有要显示的记录(即新安装的应用程序)的 UITableView 上调用 reloadData,它会崩溃。

在调用该方法之前,我必须开始检查以确保我尝试显示的记录数 >0...我个人认为这是 ios8 中的一个错误。如果我要求 View 重新加载数据,但没有数据,它应该处理它。在请求重新加载 View 之前,我不应该评估数据的存在。这有点破坏了 IMO 的整个 MVC 设计模式。

祝大家好运

关于IOS 应用程序因 [UITableView reloadData] 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25132035/

相关文章:

iphone - 在没有重新加载数据的情况下强制在表中进行屏幕更新

swift - UITableView 的 reloadData() 的替代方案?

ios - 在 iOS 中,如何以编程方式添加视频 View ,然后在使用 Swift 完成播放后将其删除?

ios - 在 UITextView 的属性文本中的最后一个字符之后调用链接方法

ios - 如何继承UIStoryboard

function - Swift 不接受文本属性?

ios - 在 react native 应用程序中打开默认的 ios 联系人列表并选择多个联系人

ios - 对于以编程方式创建其所有内容的 UITableViewCell,我应该使用哪些初始化程序/方法?

ios - 删除 TableView 中的单个分隔符

tableView.reloadData 上的 Swift fatal error 索引超出范围问题