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對象再次進行初始化操作