如何在应用程序崩溃时从iOS应用程序中删除缓存文件
我正在将应用程序中的一些文档(图像和PDF)保存到iPad目录中。现在,这些对客户敏感的文档需要在操作完成后删除,用户将注销。如何在应用程序崩溃时从iOS应用程序中删除缓存文件,ios,objective-c,Ios,Objective C,我正在将应用程序中的一些文档(图像和PDF)保存到iPad目录中。现在,这些对客户敏感的文档需要在操作完成后删除,用户将注销。 我正在处理注销事件时从目录中删除的操作,但如何在应用程序突然崩溃时实现这一点。您需要添加一个UncaughtExceptionHandler,并删除缓存 void myHandler(NSException *exception) { // Remove caches... ..... // And maybe let the app to crash?
我正在处理注销事件时从目录中删除的操作,但如何在应用程序突然崩溃时实现这一点。您需要添加一个UncaughtExceptionHandler,并删除缓存
void myHandler(NSException *exception)
{
// Remove caches...
.....
// And maybe let the app to crash?
exit(0);
}
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSSetUncaughtExceptionHandler(&myHandler);
....
}
因此,当引发未处理的NSException时,将调用myHandler。我的应用程序中有一些代码,可以在崩溃时写入日志。在流程结束之前,您还可以使用来执行某些操作 这是:
@interface AppDelegate()
void uncaughtExceptionHandler(NSException *exception);
@end
@implementation AppDelegate
void uncaughtExceptionHandler(NSException *exception)
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"app_did_crash"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
-(BOOL)application:(UIApplication *)application
{
// Get crash log
NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
}
我认为您将需要使用NSSetUncaughtExceptionHandler的异常处理程序
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
NSSetUncaughtExceptionHandler(&myExceptionHandler);
}
void myExceptionHandler(NSException *exception)
{
// do something before app crash here
}
太棒了,谢谢,希望我能投你两票。事实上,我刚刚做到了。我对你的另一个答案投了赞成票。