开发过程中经常会保存一些用户数据到本地。有些人习惯每次使用一次就主动Save一次。
今天看项目中至少有30+个位置主动调用了Save。
其次是我写了个管理下载状态的东东,总不能让我每次改变一下状态我就Save一次吧?无法接受!!!
当然,如果每次关闭的时候来保存,
第一件事情肯定是在- (void)applicationWillTerminate:(UIApplication *)application
中加入写入文件的代码!
Q:如果App崩溃了怎么办?
正确答案:解决所有Bug不让App崩溃就好了?!
WTF。
肯定会有无法解决或者无法预知的Bug存在啊,现在的想法就是去捕获异常的方法里去保存数据。
对的,使用NSSetUncaughtExceptionHandler
& NSGetUncaughtExceptionHandler
来进行异常的捕获!
也许你在很多博客都看到过对NSSetUncaughtExceptionHandler
的讲解,不过你可能没注意到NSGetUncaughtExceptionHandler
吧?
那你总知道百度的统计SDK和友盟的统计SDK吧?他们会帮我们捕获到异常信息,上传到他们自己的服务器,以便我们查看异常报告!然后他们并没有给出任何相关可以调用的方法,只给了一个开关,而且这个开关也许并没有什么卵用。(友盟虽然也给出了开关,但就算我关掉了,再调用统计方法的时候他还是会很牛逼的把异常捕获的注册拿到自己名下。)
当前直接关闭异常的捕获也不是我想要的!
那我们就想个办法把当前的临时存下来,然后自己来捕获异常,调用save之后再把异常丢给友盟就ok了!
当然,在你调用了友盟的一些统计方法后,你最好再调用一次[AppDelegate setVpUncaughExceptionHandler];
而且就算你关闭了友盟的异常报告,也最好调用一次。
这只是我目前没有办法的解决办法,如果你知道更合适的方法,麻烦告知下!