crash

我們團隊做了個小的科研型項目,用來保護iOS開發(fā)工程中的疏忽引起崩潰的情況。

使用簡單,import頭文件,在appdelegate中加一句代碼即可。

目前只是基本常見情況的處理。希望可以幫助到大家,也希望高手們吐槽指正提出意見。

解決方案放在git上開源了:https://github.com/vipshop/VDM/tree/master

防止崩潰:

1、UIControl依賴的target對象被釋放,UIControl繼續(xù)響應設置給target的selector函數(shù)導致的crash

2、UITableView依賴的delegate、datasource對象被釋放后,UITableView繼續(xù)響應delegate和datasource函數(shù)導致的crash

3、UIScrollView依賴的delegate的對象被釋放后,UIScrollView繼續(xù)響應delegate函數(shù)導致的crash

4、UIPickView依賴的delegate、datasource對象被釋放后,UITableView繼續(xù)響應delegate和datasource函數(shù)導致的crash

5、UIGestureRecognizer依賴的target對象被釋放后,UIGestureRecognizer繼續(xù)響應設置給target的selector函數(shù)導致的crash

6、NSNotificationCenter向已經(jīng)被釋放的對象發(fā)送消息導致的crash

7、KVO的觀察者observer被釋放后value變化導致的crash

8、已釋放對象調(diào)用延遲操作導致的crash

9、NSTimer的target對象被釋放后,定時任務執(zhí)行導致的crash

10、添加KVO重復添加觀察者或重復移除觀察者(KVO注冊觀察者與移除觀察者不匹配)導致的crash

實現(xiàn)原理:

1、創(chuàng)建dependencyManager單例管理依賴工具

2、category系統(tǒng)的有依賴屬性的對象,如:UIControl、UIScrollView、UITableView、UIPickerView、UIGestureRecognizer,NSTimer 在這些對象創(chuàng)建依賴時,將依賴關系以key-value的形式保存到我們的dependencyManager的單例中去

3、category IOS中被依賴的對象UIVIew、UIViewController,當被依賴對象釋放時,dependencyManager講與之關聯(lián)的依賴控件或手勢、通知移除。


最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 大白健康系統(tǒng)--iOS APP運行時Crash自動修復系統(tǒng) 前言 大白(Baymax),迪士尼動畫《超能陸戰(zhàn)隊》中...
    鼠犬玉閱讀 17,736評論 22 158
  • 寫在最前面 UITableView是iOS開發(fā)最常用的類,用起來很方便,但使用不當也很容易引起Crash,UICo...
    AlexTing雜貨店閱讀 6,010評論 3 6
  • 背景 眾所周知,對于移動客戶端而言,crash對于用戶是一種非常糟糕的體驗,crash率對于一款移動應用而言也是一...
    東野浪子閱讀 7,580評論 2 8
  • 句子:有些人,再怎么等也終究不會等到了,因為他已經(jīng)得到了自己想要的。名字:穆念慈 夢里面,你與我削竹為蕭,拾木為琴...
    狐則閱讀 391評論 0 0
  • 心理健康,需要付出代價的,而最常見的代價就是----我不再是眾人口碑中的好人。 村上春樹如是說:不管全世界怎么...
    遇見活在當下的自己閱讀 183評論 0 0

友情鏈接更多精彩內(nèi)容