iOS Crash保護(hù)工具 QYCrashProtector


App 因服務(wù)端數(shù)據(jù)返回異常塑径、未實(shí)現(xiàn)方法等問題造成的crash比比皆是葡盗, 雖然有經(jīng)驗(yàn)的猿可以通過一些 if 判斷加層保護(hù)审磁,但是總覺得不夠優(yōu)雅;而且如果面對前猿留下的代碼呢... 顯然一個個加判斷有點(diǎn)力不從心...

在此問題的基礎(chǔ)上有幸看到了此作者的文章 ->戳這里 卢未,很全面的分析了造成crash的種種原因肪凛,在此不再啰嗦... 但是遺憾的是, 作者并未開源代碼 ...

基于以上情形辽社,本人的QYCrashProtector(崩潰保護(hù)工具)就誕生了N扒健!滴铅! 開源戳葵,但有不完善的地方,希望各位小伙伴看到后積極提出寶貴意見汉匙,讓我們共同努力拱烁,對crash say goodbye ~

在此感謝@ibireme!X洹戏自! 工具中的timer保護(hù)類,引用了 YYWeakProxy 類打破retainCycle.
(因 QYCrashProtector 庫中引入的YYWeakProxy 會和 YYKit 庫重名沖突, 特此把項(xiàng)目中引入的 YYWeakProxy 更名處理.)

使用方法:

可以在程序一啟動就在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中開啟crash保護(hù)伤锚;
當(dāng)然也可以在想要開啟的任意地方開啟擅笔, 早開早用;

開啟方法:

  • Step 1:導(dǎo)入頭文件: #import <QYCrashProtector.h>
  • Step 2:[QYCrashProtector qy_openAllCrashProtector]; 開啟所有類型保護(hù)。

注意事項(xiàng):

  • 該工具的開放入口為 #import <QYCrashProtector.h>猛们, 只需導(dǎo)入該頭文件就可使用所有功能念脯;
  • QYCrashProtector.h 中有對應(yīng)的開啟保護(hù)類型的方法,可自行搭配阅懦;
  • 本工具主要采用了 method swizzling 的方式, 原工程不需要任何修改徘铝;
  • 目前支持 timer/ unrecognized selector/ NSArray/NSMutableArray/NSDictionary/NSMutableDictionary/NSCache / String系列/等保護(hù)耳胎;
  • 因KVO、NSNotification惕它、BAD_ACCESS的保護(hù)方法存在一些問題怕午,暫未提供;
  • 當(dāng)捕捉到異常時淹魄,會通過 QYErrorLog 類中的相關(guān)方法打印出來郁惜;
  • 每種類型的保護(hù)放在對應(yīng)的分類中,便于拓展維護(hù)甲锡。
    詳情請查看源碼兆蕉。

Example:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // open all crash protector.
    [QYCrashProtector qy_openAllCrashProtector];
    
    // or:
    // open unrecognized selector protector.
    [QYCrashProtector qy_openCrashProtector_unrecognized_selector];
    
    // open timer protector.
    [QYCrashProtector qy_openCrashProtector_timer];
    
    // open container protector.
    [QYCrashProtector qy_openCrashProtector_container];
    
    // open string protector.
    [QYCrashProtector qy_openCrashProtector_string];
    
    //  open UI protector.
    [QYCrashProtector qy_openCrashProtector_UI];
    
    ... 
這個防止程序崩潰的庫支持Cocoapods。
pod 'QYCrashProtector'

源碼放在GitHub上了缤沦,想查看的小伙伴可以->戳這里虎韵。


千里之行,始于足下缸废。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末包蓝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子企量,更是在濱河造成了極大的恐慌测萎,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件届巩,死亡現(xiàn)場離奇詭異硅瞧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恕汇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門零酪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拇勃,你說我怎么就攤上這事四苇。” “怎么了方咆?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵月腋,是天一觀的道長。 經(jīng)常有香客問我,道長榆骚,這世上最難降的妖魔是什么片拍? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮妓肢,結(jié)果婚禮上捌省,老公的妹妹穿的比我還像新娘。我一直安慰自己碉钠,他們只是感情好纲缓,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喊废,像睡著了一般祝高。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上污筷,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天工闺,我揣著相機(jī)與錄音,去河邊找鬼瓣蛀。 笑死陆蟆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惋增。 我是一名探鬼主播遍搞,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼器腋!你這毒婦竟也來了溪猿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤纫塌,失蹤者是張志新(化名)和其女友劉穎诊县,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體措左,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡依痊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了怎披。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胸嘁。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凉逛,靈堂內(nèi)的尸體忽然破棺而出性宏,到底是詐尸還是另有隱情,我是刑警寧澤状飞,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布毫胜,位于F島的核電站书斜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酵使。R本人自食惡果不足惜荐吉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望口渔。 院中可真熱鬧杨帽,春花似錦鲫咽、人聲如沸移斩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枪向。三九已至勤揩,卻和暖如春咧党,著一層夾襖步出監(jiān)牢的瞬間秘蛔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工傍衡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留深员,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓蛙埂,卻偏偏與公主長得像倦畅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绣的,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容