iOS5:如何防止 rectForRowAtIndexPath 方法出现异常

Posted

技术标签:

【中文标题】iOS5:如何防止 rectForRowAtIndexPath 方法出现异常【英文标题】:iOS5: How to prevent exception for rectForRowAtIndexPath method 【发布时间】:2011-10-28 14:12:25 【问题描述】:

例外:

在无效索引路径处请求矩形

代码:

CGRect rect = [tableView rectForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

修复:

if ([tableView numberOfRowsInSection:0] <= i) 
    return;

也许存在更好的方式

【问题讨论】:

【参考方案1】:

通常 rectForRowAtIndexPath 可以处理无效的 indexPath 作为文档状态,但在 ios 7.1 中,它不能正确处理无效的 indexPath。所以传入 nil 会导致崩溃并得到错误信息:

在无效索引路径处请求 rect ( 长度 = 2,路径 = 0 - 0)

总之,rectForRowAtIndexPath 需要手动进行 nil 检查。

【讨论】:

以上是关于iOS5:如何防止 rectForRowAtIndexPath 方法出现异常的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UIMenuController iOS5.1 防止 UITextView 上的复制/粘贴/选择弹出框

即使 UIStatusBarHidden 是 YES,如何防止 iOS 5 显示状态栏?

如何防止 Core Data 在 iOS 5 中重复?

防止在 iOS 5.0.1 中清除数据的文件属性?

如何防止应用程序/游戏在一段时间后恢复时崩溃

防止 UIAlertView 关闭