项目收到反馈,app有一个页面,点进去就卡住,然后过一会就闪退了。
然而这个问题我自己的手机一直没有遇到,
刚好同事那边手机也出现了这个问题,借过来连Xcode跑一下看看。
进入页面,卡住,内存开始暴增,直至闪退,没有报错点。。控制台输出:
Terminated due to memory issue
并且在iOS13以上版本没有出现。
可以检查一下内存暴增前是不是有为<Null>的字符串,没有处理,尤其是检查接口返回数据。
iOS13之后好像出现<Null>也不会崩溃了。所以有些地方开发时用的机器是iOS13的话,可能会忽略这个问题。
这个问题出现了一个月,我才解决掉。之前一直以为是偶发,并且检查了代码之后也没发现什么问题,就没有重视。直到连续收到两个反馈都是说这个问题的,开始重视起来:
1检查手机版本,我的手机是iOS13,同事的手机是iOS12.0,猜测可能和版本有关系。
2然后开始检查代码,项目里面这个闪退的地方刚好是我用到一个第三方sdk,并且是用来控制viewController显示的。
然后我就先入为主的以为是某个地方产生了死循环或者别的原因,无限的生成新的viewController。但是一直没找到错误点。
3最后重写了这个页面,从干净的viewController开始,加入第三方sdk,再加入页面切换动作,再加入接口,获取数据,在tableview中展示。
果然在加入接口之后,出现了内存暴增。
4然后我开始排查AFNetworking。。。。嗯,这个念头出现了2秒,就放弃了,简单换一个返回数据格式一样的另一个接口,问题就不出现了。然后意识到,可能是后台返回数据有问题。
5检查后台返回数据,果然出现<Null>
代码中加入空值判断,并告知后台,问题结束。
网友评论