02 iOS-常见崩溃分析
1: 字典插入nil
通过Runtime替换,为系统方法添加容错
同时添加日志,上报记录错误
保证程序运行稳定的情况下,暴露错误
2: 越界
处理方式同上
3. unrecognized selector
可以再消息传递流程内进行防护
4. TableView & CollectionView cell代理方法存在返回 nil 的情况
别偷懒
5. EXC_BAD_ACCESS
开启僵尸对象调试选项进行调试
6. SIGPIPE 异常
经实验在多个ios版本下都不再触发SIGPIPE,完美解决问题。
对一个端已经关闭的socket调用两次write,第二次write将会产生SIGPIPE信号,该信号默认结束进程
在pch中:
7. 子线程UI操作崩溃
放主线程
8. SIGABRT 异常
这是一个让程序终止的标识,会在断言、app内部、操作系统用终止方法抛出。通常发生在异步执行系统方法的时候。如CoreData、NSUserDefaults等,还有一些其他的系统多线程操作。 这并不一定意味着是系统代码存在bug,代码仅仅是成了无效状态,或者异常状态。
9. dispatch_group崩溃
enter 数量和 leave 数量要匹配
10. 对象释放的线程要和它处理事情的线程一致
参考
https://www.jianshu.com/p/c7efbc283480 https://www.jianshu.com/p/c4bd2960b3fa
Last updated