iOS開發之常見crash

     作爲開發人員難免會遇到一些令人匪夷所思的crash.這裏我總結幾個常見的crash.可以說大多都是平時寫代碼時嚴謹點的話完全可以

避免的。

首先,要說的是類型判斷。當我們拿到傳過來的一個數組或是字典或者字符串的時候。我們是否應該考慮容錯問題。加入服務器給我

們傳的不是這種類型的數據呢。因此我們以字典爲例:NSDictionary  *dict; 


    if ( dict

        || [dict isKindOfClass:[NSDictionary class]])


類似這樣的類型判斷後才做進一步的數據處理。寫代碼功能實現只佔3分,而餘下的7分其實都是再做容錯類型判斷這些工作。


第二點,也是上面的補充和延續。當我們拿到數據要傳出去的時候一定要注意網上或者後臺或者其他一些地方得到到字典從裏面去出


的對象必須判斷它的數據類型然後再傳值,否則在以後的某一時刻或許就會有一個crash bug 等着你去fix.


第三點,多個線程在訪問同一個非線程安全對象時,有可能會crash. 

解決crash的方法可以用threadDictionary或者加鎖. 
加鎖會造成線程阻塞,用threadDictionary會造成內存增加.根據實際情況取捨. 

用threadDictionary:不再訪問同一個不安全的對象,而是每一個線程都擁有一個對象,既可以提高效率(一個線程創建一次該對象就夠了),也可以保證不crash. 下面是一個列子供大家參考。

今天就先總結這麼點後續會持續更新總結一些常見crash bug 和解決方案。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章