1、unrecognized selector sent to instance(找不到方法)
2、KVC造成的crash
給不存在的key(包括key為nil)設(shè)置value
[obj setValue:@"value" forKey:@"UndefinedKey"]
[obj valueForKey:@"UndefinedKey"]
解決方案
方案1、如果屬性存在,利用iOS的反射機(jī)制來(lái)規(guī)避,NSStringFromSelector(@selector())將SEL反射為字符串作為key。這樣在@selector()中傳入方法名的過(guò)程中,編譯器會(huì)有合法性檢查,如果方法不存在或未實(shí)現(xiàn)會(huì)報(bào)黃色警告。
方案2、重寫類的setValue:forUndefinedKey:和valueForUndefinedKey:
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
}
-(id)valueForUndefinedKey:(NSString *)key{
return nil;
}
3、EXC_BAD_ACCESS
出現(xiàn)懸掛指針,對(duì)象沒(méi)有被初始化,或者訪問(wèn)的對(duì)象被釋放
4、KVO引起的崩潰
添加了觀察者,沒(méi)有在正確的時(shí)機(jī)移除
5、集合類相關(guān)崩潰
越界、添加nil、多線程非原子性操作、遍歷的同時(shí)移除元素
6、多線程中的崩潰
7、Socket長(zhǎng)連接,進(jìn)入后臺(tái)沒(méi)有關(guān)閉
8、Watch Dog超時(shí)造成的crash
9、后臺(tái)返回NSNull導(dǎo)致的崩潰,多見于Java做后臺(tái)服務(wù)器開發(fā)語(yǔ)言
10、
[UIImage stringByDeletingPathExtension]
對(duì)一個(gè)image對(duì)象再次進(jìn)行初始化操作