学如逆水行舟,不进则退
闪退是APP中最致命的一个问题,他直接影响到了用户的心情,导致用户量的流失,这对公司的损失是巨大的,毕竟用户量对互联网公司是非常重要的。作为一个好程序员我们坚决不能让这种事情发生,严格要求自己做的产品,让用户用得舒服,用得放心!
但是闪退有时候也避免不了,人无完人更何况是软件呢?软件也会有问题!那如何避免闪退这种致命级的问题呢?
在此之前有“热更新 JSPatch”,当上架的APP一旦出现问题了,就可以用JSPatch实时的修复bug。但现在热更新被苹果全面封杀了,在此就不多说JSPatch的故事了...惜哉,惜哉!
进入正题如何拦截异常信息,告别APP闪退!
大家有没有用过NSException??
看到这里想必大家都会有一些头绪了,这就是拦截异常的关键代码。
我们可以对可能会出现问题的代码块做一下@try@catch处理,这样就可以避免闪退,但你想想难道你要对项目中所有可能会出现崩溃的代码做这样的处理吗?答复是:“Of course not”。
这时runtime就上场了,我们针对系统的方法写个方法交换。比如拦截数组越界异常:
数组越界 拦截异常代码这样一来只要调用 [arr objectAtIndex:100]; 这个方法发生异常就都能拦截了。
做到这里算是做完了如何拦截异常信息,告别APP闪退。此刻大家会想,那不是要对很多系统方法写个方法交换吗?答复是:“没错”!但是这些事情已经有人写好了,在此我也非常感谢博主的分享:https://github.com/chenfanfang/AvoidCrash
既然有人帮我们写好了,太好了。。。可是回头想想,这样对很多个系统方法写个方法交换,是不是写得有点多,是不是有点麻烦。有没有更完美的方案呢?可不可以直接拦截所有方法的异常信息?我带着这个疑问希望看到这篇博客的同学们,如有更好的方案希望能指点一二。万分感谢
网友评论