iOS 應用程式秒退原因分析及解決思路總結

2021-07-11 21:05:10 字數 1943 閱讀 9264

#一 摘要

在開發蘋果應用時,測試階段經常發生應用閃退,**邏輯沒有問題,對此有點無從下手。一般由那些原因造成?

#二 造成閃退的原因有哪些呢?

1. 開啟的應用程式過多,iphone記憶體容量用量超載導致程式閃退。

2.程式執行在較老的ios系統或者老版機型上

3.程式執行時,系統動態鏈結庫或framework無法找到

4.程式初始化時無法正確讀取到使用者資料而秒退

6.程式裡的某個功能在新版作業系統才具有,但在實現中未對系統版本進行區別對待,導致用到該功能就退出程式

總結: 主要的秒退情況就是這麼幾個,並且這都是以該應用程式在新版系統上能正常執行為前提的。 諸如記憶體不足、bad_access 這類問題通常不管在新舊 ios 上都會存在,如果是由於這類問題造成的秒退通常都能在測試和審核階段被發現,因此並不常見。

注意: 秒退和記憶體不足關係不大,很少有程式會在初始化時載入大量內容導致崩潰,並且這類問題也很容易在開發階段被發現,所以記憶體不足造成秒退的可能性低(記憶體不足退,通常是程式用了一段時間,切換了幾個畫面以後發生的)。
#三 原因分析

##1.開啟的應用程式過多,iphone記憶體容量用量超載導致程式閃退。

###1) 原因分析

開啟的應用程式過多,iphone記憶體容量用量超載導致程式閃退.

###2) 解決思路

1. 如果關閉了後台應用程式,重新開啟後還是閃退,這時候就是系統內部的快取過多,重啟iphone。

2. 使用91助手修復閃退功能

###1) 原因分析

秒退是發生在程式剛剛啟動的時候,在開發、蘋果審核階段都沒有被發現的最大可能性就是,這個問題只會發生在老版系統、老版機型上。

對於很多開發者(尤其是個人開發者),進行所有 ios 版本,所有 ios 機型覆蓋測試是有難度的,蘋果審核時也只是重點審核該應用在新機器、新版本下的運**況,並不關注老系統。所以這也就是為什麼會秒退的程式竟然也能通過蘋果的審核。
###2) 解決思路

這種情況下的解決方法就是等待開發者針對系統開發包進行公升級改進,在新版正式版推出後,相信很的開發者也會對自家的產品進行了更新了,只要你對相應的程式進行公升級即可解決。

##3.程式執行時,系統動態鏈結庫或framework無法找到

#####2) 解決思路

解決辦法是等開發人員發現這個問題後公升級程式,或由使用者自行公升級其作業系統。

##4.程式初始化時無法正確讀取到使用者資料而秒退

###1) 原因分析

程式在公升級時,修改了本地儲存的資料結構,但是對使用者既存的舊資料沒有做好公升級,結果導致初始化時因為無法正確讀取使用者資料而秒退。 這類問題通常只需刪除程式後重新安裝一遍就能解決。但缺點是使用者的既存資料會丟失——就算有備份可能也無濟於事,因為備份下來的舊資料還是無法被正確公升 級。如果舊資料非常重要.
###2) 解決思路

遇到這種情況就需要聯絡開發人員要求其進行程式修正了。

###2) 解決思路

這個問題除了等開發人員公升級外使用者自己沒什麼辦法解決。當然願意換台新機器是最好的

1. 要把只有新系統才有的方法換成新舊系統都有的方法,達到好的相容性

2. 把所有系統都公升級為新的系統

#四 其它解決思路

1.可以加個友盟統計,或者自己寫個崩潰日誌。

2. 如果是在測試階段報錯的話,可以在(設定-通用-關於本機-診斷與用量)裡面看到崩潰的堆疊資訊。

3. 如果用rac的話,訪問到已經釋放了的記憶體,和記憶體警告這2種出錯機率要高些。

4. 如果是arc那麼,下標越界和邏輯錯誤的機率要高些。

iOS應用程式的Crash報告結構分析

本文分析了乙份標準的ios應用程式的crash報告,它通常由以下6個部分組成。1.報告頭 header 報告頭包含了應用程式以其執行環境的一些基本資訊,下面是報告頭的乙個例子。複製 incident identifier e6ebc860 0222 4b82 bf7a 2b1c26be1e85 cr...

iOS應用程式原理及執行順序(二)

一 控制器的生命週期 當控制器的view載入完畢就呼叫 void viewdidload 當控制器的view即將顯示的時候呼叫 控制器的view完全顯示的時候呼叫 控制器的view即將消失的時候呼叫 控制器的view完全消失的時候呼叫 控制器的view即將銷毀的時候呼叫 void viewwillu...

IOS應用程式多語言本地化解決方案

民間的本地化方法 這個介紹的還比較全.最近要對一款遊戲進行多語言本地化,在網上找了一些方案,加上自己的一點點想法整理出一套方案和大家分享!第一種做法比較簡單完全靠自己的發揮了,這裡主要講第二種做法,主要分一下幾點 1.本地化應用程式名稱 2.本地化字串 3.本地化圖片 4.本地化其他檔案 1.本地化...