iOS 為何會軟體閃退,具體是何原理呢?

最近知乎滴客戶端經常閃退,想知道為何會閃退呢?


閃退一般都是多重release、野指針導致,還有數組越界(這種要完全歸咎於代碼控制不嚴,對新手來說是出現最多的),至於內存不足之類的問題,雖然也有,但已經可以算是非主流了。


閃退其實就是程序異常了,對異常又沒有處理措施,操作系統將你進程關了。

異常包括:

1、最常見的是非法訪問內存地址。

2、程序保存的文件損毀,這時在讀取配置文件時異常。

3、網路異常,網路由於延遲,或者其他問題,導致發送數據異常。程序沒有很好的處理預防機制。

我玩部落衝突的時候發現他們這部分處理的很好。大概用了異常處理機制,以及鎖的方法。遊戲很成功,技術實力也很深厚。


訪問了已經釋放的內存。

簡言之就是向計算機請求了已經不存在的東西。


內存不足的自我保護機制。

可以重裝app。

優化系統。

重刷固件。

touch用知乎再開qq都沒問題,iPhone就更浮雲了。


那我就佔個坑回答一下.小生不才,分析一下,有錯誤請指出.

根據字面理解,應用閃退不等於應用崩潰.

本人只針對應用閃退進行回復.

我們公司做產品的,我開發的應用大約一年左右了.

其中大大小小的第三方也集成了很多.

看了一下其他回答,不知道各位有沒有遇到過.

應用閃退:不走應用初始化第一個方法,不初始化任何第三方崩潰.不走預留的任何後門.

在應用點開的一瞬間,瞬間關閉.連開機動畫都不顯示.無從排查.

卡斷點啊笨蛋?

說得好,臉上數據線,卡斷點在第一個方法,編譯運行.

運行成功,所有方法執行正常.

過一段時間,又會出現閃退.只要不連線編譯運行,永遠都是點開閃退.無法排查

連線編譯,運行正常.

目前此問題 出現在 ios 10.3 ios9.0.1

其餘設備運行正常.

當老大問起我的時候,我只能告知他,我無法解決.應該是系統原因.

至今還沒有重點解決這個問題.如果哪位大神知道,望告知分享.

等到我尋找到答案再來編輯.

以上


就是一個uncaught exception ,主函數裡面沒有catch 到所有可能的exception ,導致沒有提示就退出了


碰到最多的是內存不足


最常見的就是內存錯誤了,不過有了ARC之後好多了;

然後就是邊界異樣,比如數組訪問越界。


推薦閱讀:

如何看待蘋果手機 12 月 2 日發生的大面積黑屏重啟轉圈故障?
蘋果伺服器是如何承載全球移動設備Push請求的?
iOS 上有哪些程序員必備 App?
金山詞霸 iOS 版是如何實現長時間後台查詞以及發音的?
為什麼iPhone充電從99%到100%特別慢?

TAG:iOS | 軟體 | 知乎iOS應用 |