昨天完成一个需求,提给测试人员,幸好测试人员的手机升级了10.3版本,功能只在10.3版本crash。
收起,展开,选择每一行,头部对应的金额会发生变化,按照正常情况来说,这个需求比较简单,构造数据源,绘制cell,处理点击事件,刷新cell就可以。
测试提出这个bug,我在xocode上面,用release模拟器调试,我的xcode版本是8.0,模拟器对应的系统应该是10.0发现也没有任何问题。用jenkins打包,重新打包,在10.3版本上又出现问题,低版本的手机系统无问题。
我将crash的手机,连接到电脑,看下crash日志
测试提jira后,我立马升级了xcode到8.3 ,手机系统升级到10.3,真机调试,在点按的情况下,也并没有出现crash,且项目的app的日志信息并且任何的数组越界之类的警告。,测试人员小伙伴都来帮我真机调试复现场景了,debug仍旧复现不出场景。
最后尝试换成release包调试,果真出现问题了!!!
代码如下(注释的代码是reloadCellForType方法的具体内容)
问题在于,我用reloadSections方法,用了两遍,猜测苹果内部reloadSections应该是用block做动画效果之类的,第一个reloadSections未执行完成,在执行下面一个reloadSections会有问题。解决方法 ,在reload的上下增加
采用比较保险的方法,我选择刷一个,另一个用另一种方式绘制页面。
[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
//更新卡券头部titleCell的金额
[self.cardCell bindmodelArrayModel:self.hotelModel.additionalCommodity];
得出教训,需求完成后,要在release环境下测试自己的包,还需要关注下最新的系统。