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、集合类相关崩溃
6、多线程中的崩溃
7、Socket长连接,进入后台没有关闭
8、Watch Dog超时造成的crash
9、后台返回NSNull导致的崩溃,多见于Java做后台服务器开发语言
网友评论