iOS - 崩溃异常处理(1)
2024-10-20 01:36:25
https://www.jianshu.com/p/4d32664dcfdb
一、关于崩溃
闪退估计是我们最不想看到的,对于用户而言,马上就能产生一种不悦,对于投资方而言,也会产生对技术实力的不信任感,所以,我们就需要对闪退进行处理,这里介绍一个不错的三方:AvoidCrash
,写这个的大大也很牛逼,原文参照这里。
这个三方可以处理例如插入空值到字典中或数组中引起的崩溃、数组越界引起的崩溃、unrecognized selector sent to instance
等等的崩溃,都能捕获并且避免闪退。
对于插入空值、越界等,原理比较简单,就是利用Runtime
的方法交换,把普通的插入和取值的方法,替换成安全插入和安全读取的方法,具体代码可以去看源码。
话不多说,先上效果:
以下是可导致崩溃的代码:
NSString *nilStr = nil;
NSArray *array = @[@"chenfanfang", nilStr];
崩溃截图
若有AvoidCrash来防止崩溃,则不会崩溃,并且会将原本会崩溃情况的详细信息打印出来,如下图:
防止崩溃的效果
效果不错吧,接下来上使用步骤:
集成:
建议使用cocoapod
,仅需要pod AvoidCrash
一句话即可。(手动导入的步骤,可以参照上面所说的原文)。使用方法:(只要在
AppDelegate
的didFinishLaunchingWithOptions
方法中调用avoidCrash
方法,就可以开始监听异常。)
- (void)avoidCrash {
/*
* 项目初期不需要对"unrecognized selector sent to instance"错误进行处理,因为还没有相关的崩溃的类
* 后期出现后,再使用makeAllEffective方法,把所有对应崩溃的类添加到数组中,避免崩溃
* 对于正式线可以启用该方法,测试线建议关闭该方法
*/
[AvoidCrash becomeEffective];
// [AvoidCrash makeAllEffective];
// NSArray *noneSelClassStrings = @[
// @"NSString"
// ];
// [AvoidCrash setupNoneSelClassStringsArr:noneSelClassStrings];
//监听通知:AvoidCrashNotification, 获取AvoidCrash捕获的崩溃日志的详细信息
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dealwithCrashMessage:) name:AvoidCrashNotification object:nil];
}
- 再监听异常的通知:
- (void)dealwithCrashMessage:(NSNotification *)notification {
MYLog(@"\n
最新文章
- php用正则检测某字段开头是否为字母
- [IOS]《A Swift Tour》翻译(一)
- 遇上了artTemplate做的东西
- 20135335郝爽 &; 20135304刘世鹏 实验一
- Spark-1.0.0 standalone分布式安装教程
- (转)MVC 路由
- 使用jQuery操作 DOM
- 115个Java面试题和答案——终极列表(上)【转】
- React---简单实现表单点击提交插入、删除操作
- Django+Xadmin打造在线教育系统(九)
- Fragment与Acitvity通信
- Connection reset by [server_ip] port 22 (hexo d 部署博客出错)
- JVM 内部原理(二)— 基本概念之字节码
- 牛客网_Go语言相关练习_选择题(1)
- fatal: unable to access 'https://xxxxx': SSL connect error
- 题解【bzoj2002 [Hnoi2010]Bounce 弹飞绵羊】
- python操作mysql二
- Pandas快速入门(深度学习入门2)
- mysql ,show slave status详解
- java8新特性学习笔记(二) 流的相关思想
热门文章
- 《Maven实战》整理
- PowerMock框架讲解及使用
- django中安全sql注入等
- 【转载】 tf.Print() (------------ tensorflow中的print函数)
- Python3基础 from...import...as 解决局部导入时的函数名重复问题
- 【计算机视觉】OpenCV篇(10) - 模式识别中的模板匹配
- 【论文阅读】FaceBoxes- CPU Real-time Face Detector with High Accuracy
- opencc介绍
- XGBoost 原理及应用
- 使用echarts绘制条形图和扇形图