ios閃退場景總結

一.啓動閃退

1.老版機型 或者老版系統          測試力度沒有覆蓋多個機型,多個系統版本

解決辦法:   公司提供一套測試機,全面測試,提高用戶體驗,防止用戶流失

2.項目中使用的第三方庫已經不是蘋果官方的審覈門檻,

現象  :  新ios上可以正常使用,但是老版本ios上秒退   最常見原因系統動態鏈接庫或者framework 無法找到

解決辦法:開發人員發現這個問題後升級程序,或由用戶自行升級其操作系統。

3.系統升級,用戶數據丟失

出現原因:程序在升級時,修改了本地存儲的數據結構,但是對用戶既存的舊數據沒有做好升級,結果導致初始化時因爲無法正確讀取用戶數據而秒退。這類問題通常只需刪除程序後重新安裝一遍就能解決。但缺點是

               用戶的既存數據會丟失——就算有備份可能也無濟於事,因爲備份下來的舊數據還是無法被正確升級。

解決辦法:如果舊數據非常重要,那麼就需要聯繫開發人員要求其進行程序修正了。

4.ios系統升級,程序調用某個功能閃退

出現原因:是開發時用到了只有新版操作系統才支持的某個方法,而又沒有對該方法是否存在於老系統中做出判斷

5.內存不足,導致程序崩潰

總結:啓動秒退原因:不兼容老手機,老系統; 使用的第三方庫已過期; app版本或者後臺升級造成用戶數據丟失;

ios系統升級,導致之前的調用不可用;內存不足導致閃退

二.程序崩潰導致閃退

       1.點擊某個模塊或者某個功能按鈕,進行頁面跳轉,或者獲取數據。---------------------->沒數據會崩潰,數據錯誤會崩潰。

  2.點擊某個模塊或者某個功能按鈕,進行頁面跳轉,或者獲取數據。---------------------->業務邏輯處理不當會導致崩潰。

  3.點擊某個模塊或者某個功能按鈕,直接導致崩潰:編輯代碼時無報錯,編譯時出錯。---------------------->代碼邏輯錯誤,或者存在閃退符號的代碼。

      4.某對象無法解析每個方法,該方法沒有實現。

      5.Bundle中加載不存在的資源。

=========================================程序崩潰的解決辦法==========================================

一:寫個方法打印崩潰日誌

 程序出現異常,要獲得出錯的原因,測試時可以通過打印崩潰信息來查看,上線後,要把用戶的崩潰日誌文件上傳到服務器,以待處理。

    1. 在程序啓動時加上一個異常捕獲監聽,用來處理程序崩潰時的回調動作。

       NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);

    2. 實現自己的處理函數

       void UncaughtExceptionHandler(NSException *exception) {

    NSArray *arr = [exception callStackSymbols];//得到當前調用棧信息

    NSString *reason = [exception reason];//非常重要,就是崩潰的原因

    NSString *name = [exception name];//異常類型

      //打印錯誤信息:

    NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr);

}

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章