iOS 基于 Swizzle Method的Crash 防护组件
2017-12-22 本文已影响715人
吴欧
前言
出于需要,查找资料编写了WOCrashProtector组件。
WOCrashProtector是一个无侵入的 iOS crash 防护框架,基于 Swizzle Method 的 Crash 防护。能有效的防止代码潜在的crash,自动在app运行时实时捕获导致app崩溃的破环因子,使app避免崩溃,照样可以继续正常运行。 主要参考了《大白健康系统--iOS APP运行时Crash自动修复系统》此文,以及AvoidCrash、QYCrashProtector、NeverCrash这三个框架编写而成。更多内容请看项目吧。
unrecognized selector crash
KVO、KVC crash
NSNotification crash
NSTimer crash
Container crash(数组越界,插nil,字典objc、key为nil等)
NSString crash(字符串截取越界等)
NSAttributedString
导入#import "WOCrashProtectorManager.h"

crash log日志输出:

系统支持 iOS 8.0 ~ iOS 11.2
** 建议实际开发的时候关闭该组件,以便及时发现crash bug,需要上架或者演示的时候开启crash防护组件。 **
该组件中使用了@try@catch捕捉crash会占用极少量内存,不过正常情况下不影响性能。
目前尚未测试其他第三方框架共同使用时是否存在冲突的情况,如bugly、友盟等。
如果您发现了问题希望能issue,大家一起来解决问题 ^_^