iOS常見crash問題及crash日誌分析

來源:互聯網
上載者:User

標籤:

第一、iOS常見crash問題

1、插入空元素

對於NSMutableArray、NSMutableDictionary、NSMutableSet等可變的對象,插入空元素時crash
正確做法是加判斷,sample code如下所示:
   NSDictionary *dic;
   NSMutableArray *arr=[NSMutableArray new];
   if (dic) {
        [arr addObject:dic];
      }
   NSLog(@"%@",arr);
   加非空的判斷條件: if(dic)
2、越界和指標空的判斷
這種crash類似於C++,對於NSArray類型的對象,當調用objectAtIndex時一定要判斷是否越界。
指標OC開發中使用的不多,如果要用也一定要判斷是否為空白

3、添加NSNotification後,在dealloc函數中,一定要removeObserve

4、建立NSTimer定時任務,在dealloc函數中,一定要invalidate

5、當你在代碼中發起了網路請求,並且設定的代理,那麼在dealloc函數中一定要釋放掉改代理,因為網路訪問是有時間的,當網路資料回來之後發現代理對象不在了,這個時候就會發生crash

6、使用高版本的api,因為每個app都有使用的iphone版本,當使用者機器使用的是低版本系統,如果遇上你的高版本API必定會crash

7、佔用記憶體過多,在收到兩次記憶體警告就會crash,所以該釋放的東西一定要及時釋放

8、多線程並行作業引發的crash,在多並發環境中,如果一個線程已經將資料刪除,另外一個線程去訪問,因資料不在必然會crash,所以一定要通過加鎖機制來解決問題

9 、調用不存在的類或方法

if(NSClassFromString(@"MFMailComposeViewController”)) respondsToSelector:


iOS常見crash問題及crash日誌分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.