iOS程序闪退的原因以及处理办法
iOS程序闪退是一种比较常见的现象。闪退的情况很多,造成程序闪退的原因也很多。
================================启动时闪退===================================
情况一: 秒退是发生在程序刚刚启动的时候,在开发、苹果审核阶段都没有被发现的最大可能性就是,这个问题只会发生在老版系统、老版机型上。
出现原因: 对于很多开发者,进行所有 iOS 版本,所有 iOS 机型覆盖测试是有难度的,苹果审核时也只是重点审核该应用在新机器、新版本下的运行情况,并不关注老系统。所以这也就是为什么会秒退的程序竟然
也能通过苹果的审核。
解决办法: 公司提供一套测试机,全面测试,提高用户体验,防止用户流失。
***********************************************************************************
情况二:苹果官方审查力度加大,导致代码或者数据库更新,或者项目中使用的第三方代码已经不适合当前的苹果官方的审查门槛。
出现原因:在新 iOS 上正常的应用,到了老版本 iOS 上秒退最常见原因是系统动态链接库或Framework无法找到。这种情况通常是由于 App 引用了一个新版操作系统里的动态库(或者某动态库的新版本)或只有
新 iOS 支持的 Framework,而又没有对老系统进行测试,于是当 App 运行在老系统上时便由于找不到而秒退。
解决办法:开发人员发现这个问题后升级程序,或由用户自行升级其操作系统。
*************************************************************************************
情况三:系统升级,用户数据丢失导致
出现原因:程序在升级时,修改了本地存储的数据结构,但是对用户既存的旧数据没有做好升级,结果导致初始化时因为无法正确读取用户数据而秒退。这类问题通常只需删除程序后重新安装一遍就能解决。但缺点是
用户的既存数据会丢失——就算有备份可能也无济于事,因为备份下来的旧数据还是无法被正确升级。
解决办法:如果旧数据非常重要,那么就需要联系开发人员要求其进行程序修正了。
*************************************************************************************
情况四:iOS版本升级导致问题,用到 App 里某个功能后闪退。
出现原因:是开发时用到了只有新版操作系统才支持的某个方法,而又没有对该方法是否存在于老系统中做出判断。例如程序启动时用到了 Game Center,而没有判断用户的
机器是否支持 Game Center,于是就秒退了。
解决办法:做判断
*************************************************************************************
情况五:内存占用过大,导致程序崩溃。
出现原因:诸如内存不足、BAD_ACCESS 这类问题通常不管在新旧 iOS 上都会存在,内存不足导致闪退,并不常见 ,因为这类问题造成的秒退通常都能在测试和审核阶段被发现
以下是当个应用程序能够使用的最大的内存空间。<来自StackOverFlow>
=====================================程序崩溃导致闪退===============================================
常见程序崩溃原因:
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);
}
二,程序中集成友盟。
友盟可以帮我们了解应用趋势、渠道分析、留存分析、行为分析、用户属性、错误分析。其中的错误分析,可以帮我们找到问题的根源。
应用趋势
清晰展现应用的新增用户、活跃用户、启动次数、版本分布、行业指标等数据,方便您从整体掌控应用的运营情况及增长动态。
渠道分析
在哪里推广最有效?从哪里获取的用户最有价值?友盟统计渠道分析功能可以实时查看各渠道的新增用户、活跃用户、次日留存率等用户指标,通过数据对比评估不同渠道的用户质量和活跃程度,从而衡量推广效果。
留存分析
您可以掌握每日(周/月)的新增用户在初次使用后一段时间内的留存率,留存率的高低一定程度上反映了产品和用户质量的好坏。
行为分析
针对性地进行应用内的数据统计,了解用户的产品使用细节及行为特征,帮助您寻找产品改进的突破点,评估产品优化的效果。
用户属性
用户的基本属性和行为特征,帮助您全面了解用户。
错误分析
收集并归类崩溃日志,提供错误管理及分析工具,帮助开发者更好的解决问题,从而提高应用的稳定性,改善应用质量。
iOS程序闪退的原因以及处理办法的更多相关文章
- Unity3D游戏在iOS上因为trampolines闪退的原因与解决办法
http://7dot9.com/?p=444 http://whydoidoit.com/2012/08/20/unity-serializer-mono-and-trampolines/ 确定具体 ...
- Unity3D 游戏在 iOS 上因为 trampolines 闪退的原因与解决办法
崩溃的情况 进入游戏一会儿,神马都不要做,双手离开手机,盯着屏幕看吧,游戏会定时从服务器那儿读取一些数据,时间一长,闪退了.尼玛问题是神马呢?完全没有头绪,不过大体猜测是因为网络请求导致的,那么好,先 ...
- Unity 接MM横屏闪退的原因
=.=研究了1天接SDK到处都在报错,于是使用logcat查看原因截取到这样的Exception. call to OpenGL ES API withno current context(logge ...
- eclipse 导出Runnable JAR file ,双击无法执行原因与解决 双击后闪退的原因 批处理java打包文件 @echo off start javaw -jar *.jar
eclipse 导出Runnable JAR file 导出后如果系统没有JRE,双击无法运行,需要用命令方法 安装后解决,如图 双击后闪退的原因,通过执行 java -jar TingGe.jar ...
- iOS开发-闪退问题-解决之前上架的 App 在 iOS 9 会闪退问题
最新更新:(2015.10.02) 开发环境: Delphi 10 Seattle OS X El Capitan v10.11 需使用下列 HotfixID: 30398, PAServer Hot ...
- Windows Media Player播放视频导致程序闪退
在有的电脑上发现,使用Windows Media Player组件播放视频导致程序闪退. 发现是显卡问题,独立显卡换成集成显卡 解决: 打开显卡控制面板->管理3D设置->集成图形-> ...
- iOS中app启动闪退的原因
这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面 ...
- iOS-中app启动闪退的原因
这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面 ...
- Tomcat双击startup.bat闪退的原因及解决方式
很久不碰Tomcat了,最近因为种种原因需要重新投入到Java Web的怀抱,所以又重新接触了Tomcat 我下载了tomcat的压缩包将其解压缩到某个位置,我这里是D盘下的tomcat文件夹中,但是 ...
随机推荐
- java二维码生成技术
自从微信扫描出世,二维码扫描逐渐已经成为一种主流的信息传递和交换方式.下面就介绍一下我学习到的这种二维码生成方式.预计再过不久身份证户口本等都会使用二维码识别了,今天就做一个实验案例: 二维码主要实现 ...
- python_利用高阶函数实现剪枝函数
案例: 某些时候,我们想要为多个函数,添加某种功能,比如计时统计,记录日志,缓存运算结果等等 需求: 在每个函数中不需要添加完全相同的代码 如何解决? 把相同的代码抽调出来,定义成装饰器 求斐波那契数 ...
- robotframework安装及入门指南
将很久之前自己在本地记录的一些笔记发表到随笔来,希望能够帮到一些童鞋~ robotframework安装及入门指南 本文主要介绍robotframework在windows环境的安装过程! 安装步骤 ...
- WPF笔记(2.4 Grid)
第一章已经简单介绍过这个容器,这一节详细介绍.Grid一般是用表格(Grid.Row 和Grid.Column )的,比StackPanel更细致一些,但是,这么玩很麻烦,先横着竖着定义一大堆,然后把 ...
- 学会配置nginx
一.作为一名开发人员,大家可能经常会用到服务器,但是一般线上的服务器可能都是公司公用的,而且线上的服务器一般也不是能随随便便给个人用的,所以部署本地服务器看来是一遍必不可少的事情和能力呀,所以,ngi ...
- 什么是NAS.什么是黑白群晖?(转)
前言 为了让更多的新人可以简单了解什么是nas,什么是黑群晖.什么是白群晖!有什么作用?特此制作以下教学!(原文为MOMO所写).图片也大体从互联网上下载.有对原作者不便之 ...
- JS前端验证代码
手机号码正则表达式验证: function checkPhone(){ var phone = document.getElementById('phone').value; if(!(/^1[345 ...
- rapid framework开发系列(一)
定义:web项目脚手架 rapid-framework是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hiberna ...
- Django REST framework反向生成url
Django REST framework是一个基于Django的框架,REST framework又是怎么反向生成url的呢?? 在前面的例子中,知道在REST framework中有6种版本控制的 ...
- python threading queue模块中join setDaemon及task_done的使用方法及示例
threading: t.setDaemon(True) 将线程设置成守护线程,主进行结束后,此线程也会被强制结束.如果线程没有设置此值,则主线程执行完毕后还会等待此线程执行. t. ...