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

4

我正在将一些文档(图片和PDF文件)保存在我的应用程序中的iPad目录中。由于这些文档与客户敏感信息相关,需要在操作完成后,用户注销时删除。我已经处理了注销事件时从目录中删除文档,但是如果应用程序突然崩溃,如何实现自动删除呢?

3个回答

5

您需要添加一个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将被调用。


太棒了,谢谢,希望我能给你投两票。实际上,我刚刚做到了。我给你的另一个答案点了赞。 - Paul Cezanne

1
我有一些代码在我的应用程序中,可以在崩溃时写入日志。也许你可以在进程消失之前使用它来执行一些操作。

这是代码:

@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);
}

0

我认为你需要使用NSSetUncaughtExceptionHandler来编写异常处理程序

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    NSSetUncaughtExceptionHandler(&myExceptionHandler);
}

void myExceptionHandler(NSException *exception)
{
    // do something before app crash here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接