我的应用程序崩溃并显示以下错误。
线程 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/