iOS 中常見crash總結

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 好好說話到底有多難? “好好說話”是社會公認的常識,可是能真正做到的人卻不多。就像“知道了那么多道理,卻依然過不好...
    8230簡單閱讀 357評論 0 0
  • 今日體驗,今天下了班給店長出去找客戶找要維修費,車輛維修完長時間都沒有結帳,一直在追帳都沒有找到人,今天可算給結帳...
    王全峰閱讀 112評論 0 0
  • 一年前,曾讀過蔡崇達的《皮囊》,著實的提不起興趣,就擱置了許久,也忘了還有這本書。 恰巧,這個暑假時間很多。習慣于...
    我的筆名是西瓜閱讀 701評論 0 2
  • 偶成 事不找人人找事,人不找事事找人。 一時人事兩不擾,便得清凈自在心。 2011.3.23 擬古 游子無所依,策...
    以一圣真閱讀 475評論 0 0
  • 什么是婚姻觀? 我先提出兩個最基本的問題: 1.怎樣看待婚姻? 2.在婚姻里該如何生活? 1.怎樣看待婚姻? 簡單...
    Ace_Lee閱讀 789評論 0 0