常见的crash
- Unrecognized Selector Sent to Instance/class
- 容器类的数组越界,key-value参数异常
- KVO crash
- 移除了未注册的观察者,导致崩溃
- 重复移除多次,移除次数多于添加次数,导致崩溃
- 观察者没有实现observeValueForKeyPath:导致崩溃
- 添加keypath为空字符串时,导致崩溃
- 添加或者移除时 keypath == nil,导致崩溃
- KVC crash
- key/keypath值不正确
- 设置的值的类型不匹配
- NSString,NSMutableString,NSAttributedString,NSMutableAttributedString(下标越界以及参数nil异常)
- NSTimer(忘记invalidate ,导致内存泄漏)
- 不在主线程刷新UI
- NSNull 方法不存在
- 野指针
看门狗
APP的看门狗,基于runtime的Swizzle Method的crash防护框架,能实时捕获导致app崩溃的破坏因子并自动修复,保持应用的健壮性,传送门。