1、unrecognized selector sent to instance(找不到方法)
2、KVC造成的crash
给不存在的key(包括key为nil)设置value
[obj setValue:@"value" forKey:@"UndefinedKey"]
[obj valueForKey:@"UndefinedKey"]
解决方案
方案1、如果属性存在,利用iOS的反射机制来规避,NSStringFromSelector(@selector())将SEL反射为字符串作为key。这样在@selector()中传入方法名的过程中,编译器会有合法性检查,如果方法不存在或未实现会报黄色警告。
方案2、重写类的setValue:forUndefinedKey:和valueForUndefinedKey:
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
}
-(id)valueForUndefinedKey:(NSString *)key{
return nil;
}
3、EXC_BAD_ACCESS
出现悬挂指针,对象没有被初始化,或者访问的对象被释放
4、KVO引起的崩溃
添加了观察者,没有在正确的时机移除
5、集合类相关崩溃
越界、添加nil、多线程非原子性操作、遍历的同时移除元素
6、多线程中的崩溃
7、Socket长连接,进入后台没有关闭
8、Watch Dog超时造成的crash
9、后台返回NSNull导致的崩溃,多见于Java做后台服务器开发语言
10、
[UIImage stringByDeletingPathExtension]
对一个image对象再次进行初始化操作