如何在应用程序崩溃时从iOS应用程序中删除缓存文件

如何在应用程序崩溃时从iOS应用程序中删除缓存文件,ios,objective-c,Ios,Objective C,我正在将应用程序中的一些文档(图像和PDF)保存到iPad目录中。现在,这些对客户敏感的文档需要在操作完成后删除,用户将注销。 我正在处理注销事件时从目录中删除的操作,但如何在应用程序突然崩溃时实现这一点。您需要添加一个UncaughtExceptionHandler,并删除缓存 void myHandler(NSException *exception) { // Remove caches... ..... // And maybe let the app to crash?

我正在将应用程序中的一些文档(图像和PDF)保存到iPad目录中。现在,这些对客户敏感的文档需要在操作完成后删除,用户将注销。
我正在处理注销事件时从目录中删除的操作,但如何在应用程序突然崩溃时实现这一点。

您需要添加一个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
}

太棒了,谢谢,希望我能投你两票。事实上,我刚刚做到了。我对你的另一个答案投了赞成票。