如题,项目地址请点击这里
用 method swizzle 来实现,没有使用 try-catch。 对常见的容器类,数组字典字符串这些有做保护,顺带新增了 NSSet,NSCache,NSUserDefaults,NSData 等几个类的保护,支持拦截 unrecognized selector sent to instance 异常,设置好要拦截的类即可。
已经在自己的项目用上了,目前工作稳定,iOS8.x 到 iOS11.x 都测试通过。
一些使用代码规范就能解决的崩溃,比如 NSTimer,通知和 KVO 这些造成的崩溃,本项目并未做额外处理,这种低级的失误,还是用代码规范来限制比较好。