#引子
最近,扇贝单词书改版上线了,但根据Bugly
的追踪日志发现:在iOS 9.x.x
设备上,当用户获取单词书分类信息时,会出现莫名的闪退(专业地说是程序崩溃)。做为这一块的开发人员,自然而然要负起修复这个异常的责任!(外加深刻地自发地过失检讨)借助Xcode
的断点调试功能,我开始了问题的回溯与分析。
#过程
看着这个崩溃在主函数的异常,我们都会感到很“亲切”!第一步当然是打开全局的异常断点,观察一下是否是某些代码出现数组越界、字典的值为nil
之类的异常。然而,情况依旧没有什么改变,并且控制台也没有什么异常的信息打印。我便意识到这个问题可能不会很容易检查出来了,至少从表面看,从代码本身,没有发现什么问题。
于是,进行第二步,即单步调试。根据崩溃调用栈的信息,问题是进行UICollectionView
的属性约束时发生的(方法是系统私有的方法),问题就被锁定到了UICollectionView
的配置上面了。
它的dataSource
是通过网络请求获取的,而在控制器要展示它的时候,实际上就会调用它的数据源方法。当时没有注意到这点(实际上UITableView
也是如此,不然刷新数据就不应该叫做reloadData
了。在学习这些需要配置数据源的UI
控件,我