ios闪退场景总结

一.启动闪退

1.老版机型 或者老版系统          测试力度没有覆盖多个机型,多个系统版本

解决办法:   公司提供一套测试机,全面测试,提高用户体验,防止用户流失

2.项目中使用的第三方库已经不是苹果官方的审核门槛,

现象  :  新ios上可以正常使用,但是老版本ios上秒退   最常见原因系统动态链接库或者framework 无法找到

解决办法:开发人员发现这个问题后升级程序,或由用户自行升级其操作系统。

3.系统升级,用户数据丢失

出现原因:程序在升级时,修改了本地存储的数据结构,但是对用户既存的旧数据没有做好升级,结果导致初始化时因为无法正确读取用户数据而秒退。这类问题通常只需删除程序后重新安装一遍就能解决。但缺点是

               用户的既存数据会丢失——就算有备份可能也无济于事,因为备份下来的旧数据还是无法被正确升级。

解决办法:如果旧数据非常重要,那么就需要联系开发人员要求其进行程序修正了。

4.ios系统升级,程序调用某个功能闪退

出现原因:是开发时用到了只有新版操作系统才支持的某个方法,而又没有对该方法是否存在于老系统中做出判断

5.内存不足,导致程序崩溃

总结:启动秒退原因:不兼容老手机,老系统; 使用的第三方库已过期; app版本或者后台升级造成用户数据丢失;

ios系统升级,导致之前的调用不可用;内存不足导致闪退

二.程序崩溃导致闪退

       1.点击某个模块或者某个功能按钮,进行页面跳转,或者获取数据。---------------------->没数据会崩溃,数据错误会崩溃。

  2.点击某个模块或者某个功能按钮,进行页面跳转,或者获取数据。---------------------->业务逻辑处理不当会导致崩溃。

  3.点击某个模块或者某个功能按钮,直接导致崩溃:编辑代码时无报错,编译时出错。---------------------->代码逻辑错误,或者存在闪退符号的代码。

      4.某对象无法解析每个方法,该方法没有实现。

      5.Bundle中加载不存在的资源。

=========================================程序崩溃的解决办法==========================================

一:写个方法打印崩溃日志

 程序出现异常,要获得出错的原因,测试时可以通过打印崩溃信息来查看,上线后,要把用户的崩溃日志文件上传到服务器,以待处理。

    1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作。

       NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);

    2. 实现自己的处理函数

       void UncaughtExceptionHandler(NSException *exception) {

    NSArray *arr = [exception callStackSymbols];//得到当前调用栈信息

    NSString *reason = [exception reason];//非常重要,就是崩溃的原因

    NSString *name = [exception name];//异常类型

      //打印错误信息:

    NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr);

}

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值