在项目中写一些冗余代码

博客讲述了作者在扇贝单词书项目中遇到的程序崩溃问题,由于缺少冗余代码,导致数据源方法在未准备好时被触发。通过调试和前辈的指导,发现问题在于返回行数的数据源方法返回了负值。总结强调了冗余代码在防御式编程中的重要性,以及测试时全面覆盖不同系统版本的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#引子

最近,扇贝单词书改版上线了,但根据Bugly的追踪日志发现:在iOS 9.x.x设备上,当用户获取单词书分类信息时,会出现莫名的闪退(专业地说是程序崩溃)。做为这一块的开发人员,自然而然要负起修复这个异常的责任!(外加深刻地自发地过失检讨)借助Xcode的断点调试功能,我开始了问题的回溯与分析。

#过程

看着这个崩溃在主函数的异常,我们都会感到很“亲切”!第一步当然是打开全局的异常断点,观察一下是否是某些代码出现数组越界、字典的值为nil之类的异常。然而,情况依旧没有什么改变,并且控制台也没有什么异常的信息打印。我便意识到这个问题可能不会很容易检查出来了,至少从表面看,从代码本身,没有发现什么问题。

于是,进行第二步,即单步调试。根据崩溃调用栈的信息,问题是进行UICollectionView的属性约束时发生的(方法是系统私有的方法),问题就被锁定到了UICollectionView的配置上面了。

它的dataSource是通过网络请求获取的,而在控制器要展示它的时候,实际上就会调用它的数据源方法。当时没有注意到这点(实际上UITableView也是如此,不然刷新数据就不应该叫做reloadData了。在学习这些需要配置数据源的UI控件,我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值