iOS-捕获崩溃的异常和友好的处理
程序员文章站
2024-03-20 20:04:58
...
1.前言
开发iOS应用,解决Crash问题始终是一个难题。Crash分为两种,一种是由EXC_BAD_ACCESS引起的,原因是访问了不属于本进程的内存地址,有可能是访问已被释放的内存;另一种是未被捕获的Objective-C异常(NSException),导致程序向自身发送了SIGABRT信号而崩溃。其实对于未捕获的Objective-C异常,我们是有办法将它记录下来的,如果日志记录得当,能够解决绝大部分崩溃的问题。这里对于UI线程与后台线程分别说明。
网上的捕获异常的方法都大同小异,都是处理处理signal信号。这里我把捕获的异常保存到缓存目录上,然后你可以通过邮件或者网络接口把自己发给自己或者公司,便于自己分析和在下个版本上进行修复工作。
2.创建单利
单利主要做有一下功能,捕获崩溃日志、存取日子和界面提示功能;详见ZFJUncaughtExceptionHandler.h的方法;
- 初始化
默认我是打开异常捕获的,当然你可以这这里面添加一个字段来控制打开或者关闭捕获功能;
可以通过添加一个字段install来打开或者关闭,例如:
从异常堆栈里面获取异常信息;
处理异常
异常日志保存到本地;
3.函数调用
4.运行效果