在 Appdelegate 里

applicationWillTerminate

是处理应用程序将终止的时候

按道理,我们在这个地方去写我们 App 被关闭时的操作就行。

但是,我发现 App 关闭的时候,并不会走到这里来。

然后我看了下系统的注释:当应用程序即将终止时调用。如果适当的保存数据。可看 appropriate. See also applicationDidEnterBackground:. 这个方法

好像和我遇到的问题没啥关系! 我只想在 App 关闭的时候调用

// 应用程序将终止
- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    NSLog(@"applicationWillTerminate");
}

好了,答案来了。

我们到 applicationDidEnterBackground 执行个方法,代码如下:

// 我们到 applicationDidEnterBackground 执行下 beginBackgroundTaskWithExpirationHandler
- (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:^(){
    }];
    NSLog(@"applicationDidEnterBackground");
}

// 这时候你就会发现 applicationWillTerminate 这货被调用了,有没有人过来解释下。。
- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    NSLog(@"applicationWillTerminate");
}

本文固定链接: http://www.js-code.com/ios/ios_54604.html