在崩溃iOS app上调用的方法

时间:2013-12-05 13:13:58

标签: ios objective-c

问题是我想在我的申请被终止之前向钥匙串发送一些东西(是的,我的意思是终止 - 不在后台)。

我非常确定AppDelegate方法:

- (void)applicationWillTerminate:(UIApplication *)application

在类似的情况下工作。但现在,这种方法从未被调用过。

我正在使用Xcode 5并为iOS 7.0开发

2 个答案:

答案 0 :(得分:11)

我不确定崩溃时是否会触发applicationWillTerminate:

我在didFinishLaunchingWithOptions:期间致电:

NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);

然后,在你的appDelegate中,添加:

void uncaughtExceptionHandler(NSException *exception) {
    NSLog(@"CRASH: %@", exception);
    NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
    // Internal error reporting
}

也许你可以通过这种方法保存钥匙串。

答案 1 :(得分:0)

对于Swift 4

didFinishLaunchingWithOptions()中使用此代码:

NSSetUncaughtExceptionHandler { exception in
            print("Error Handling: ", exception)
            print("Error Handling callStackSymbols: ", exception.callStackSymbols)
        }

任何时候您的应用崩溃时,都会调用此块。