https://www.jianshu.com/p/4d32664dcfdb

一、关于崩溃

闪退估计是我们最不想看到的,对于用户而言,马上就能产生一种不悦,对于投资方而言,也会产生对技术实力的不信任感,所以,我们就需要对闪退进行处理,这里介绍一个不错的三方:AvoidCrash,写这个的大大也很牛逼,原文参照这里

这个三方可以处理例如插入空值到字典中或数组中引起的崩溃、数组越界引起的崩溃、unrecognized selector sent to instance等等的崩溃,都能捕获并且避免闪退。

对于插入空值、越界等,原理比较简单,就是利用Runtime的方法交换,把普通的插入和取值的方法,替换成安全插入和安全读取的方法,具体代码可以去看源码。
话不多说,先上效果:
以下是可导致崩溃的代码:

    NSString *nilStr = nil;
NSArray *array = @[@"chenfanfang", nilStr];

 
 
崩溃截图

若有AvoidCrash来防止崩溃,则不会崩溃,并且会将原本会崩溃情况的详细信息打印出来,如下图:

 

防止崩溃的效果

效果不错吧,接下来上使用步骤:

  • 集成:
    建议使用cocoapod,仅需要pod AvoidCrash一句话即可。(手动导入的步骤,可以参照上面所说的原文)。

  • 使用方法:(只要在AppDelegatedidFinishLaunchingWithOptions方法中调用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

最新文章

  1. php用正则检测某字段开头是否为字母
  2. [IOS]《A Swift Tour》翻译(一)
  3. 遇上了artTemplate做的东西
  4. 20135335郝爽 & 20135304刘世鹏 实验一
  5. Spark-1.0.0 standalone分布式安装教程
  6. (转)MVC 路由
  7. 使用jQuery操作 DOM
  8. 115个Java面试题和答案——终极列表(上)【转】
  9. React---简单实现表单点击提交插入、删除操作
  10. Django+Xadmin打造在线教育系统(九)
  11. Fragment与Acitvity通信
  12. Connection reset by [server_ip] port 22 (hexo d 部署博客出错)
  13. JVM 内部原理(二)— 基本概念之字节码
  14. 牛客网_Go语言相关练习_选择题(1)
  15. fatal: unable to access 'https://xxxxx': SSL connect error
  16. 题解【bzoj2002 [Hnoi2010]Bounce 弹飞绵羊】
  17. python操作mysql二
  18. Pandas快速入门(深度学习入门2)
  19. mysql ,show slave status详解
  20. java8新特性学习笔记(二) 流的相关思想

热门文章

  1. 《Maven实战》整理
  2. PowerMock框架讲解及使用
  3. django中安全sql注入等
  4. 【转载】 tf.Print() (------------ tensorflow中的print函数)
  5. Python3基础 from...import...as 解决局部导入时的函数名重复问题
  6. 【计算机视觉】OpenCV篇(10) - 模式识别中的模板匹配
  7. 【论文阅读】FaceBoxes- CPU Real-time Face Detector with High Accuracy
  8. opencc介绍
  9. XGBoost 原理及应用
  10. 使用echarts绘制条形图和扇形图