開發(fā)過程中經(jīng)常會(huì)保存一些用戶數(shù)據(jù)到本地。有些人習(xí)慣每次使用一次就主動(dòng)Save一次。
今天看項(xiàng)目中至少有30+個(gè)位置主動(dòng)調(diào)用了Save。
其次是我寫了個(gè)管理下載狀態(tài)的東東,總不能讓我每次改變一下狀態(tài)我就Save一次吧?無法接受?。?!
當(dāng)然,如果每次關(guān)閉的時(shí)候來保存,
第一件事情肯定是在- (void)applicationWillTerminate:(UIApplication *)application中加入寫入文件的代碼!

Q:如果App崩潰了怎么辦?
正確答案:解決所有Bug不讓App崩潰就好了?!
WTF。
肯定會(huì)有無法解決或者無法預(yù)知的Bug存在啊,現(xiàn)在的想法就是去捕獲異常的方法里去保存數(shù)據(jù)。
對(duì)的,使用NSSetUncaughtExceptionHandler & NSGetUncaughtExceptionHandler來進(jìn)行異常的捕獲!
也許你在很多博客都看到過對(duì)NSSetUncaughtExceptionHandler的講解,不過你可能沒注意到NSGetUncaughtExceptionHandler吧?
那你總知道百度的統(tǒng)計(jì)SDK和友盟的統(tǒng)計(jì)SDK吧?他們會(huì)幫我們捕獲到異常信息,上傳到他們自己的服務(wù)器,以便我們查看異常報(bào)告!然后他們并沒有給出任何相關(guān)可以調(diào)用的方法,只給了一個(gè)開關(guān),而且這個(gè)開關(guān)也許并沒有什么卵用。(友盟雖然也給出了開關(guān),但就算我關(guān)掉了,再調(diào)用統(tǒng)計(jì)方法的時(shí)候他還是會(huì)很牛逼的把異常捕獲的注冊(cè)拿到自己名下。)
當(dāng)前直接關(guān)閉異常的捕獲也不是我想要的!
那我們就想個(gè)辦法把當(dāng)前的臨時(shí)存下來,然后自己來捕獲異常,調(diào)用save之后再把異常丟給友盟就ok了!

當(dāng)然,在你調(diào)用了友盟的一些統(tǒng)計(jì)方法后,你最好再調(diào)用一次[AppDelegate setVpUncaughExceptionHandler];而且就算你關(guān)閉了友盟的異常報(bào)告,也最好調(diào)用一次。
這只是我目前沒有辦法的解決辦法,如果你知道更合適的方法,麻煩告知下!