gpt4 book ai didi

iphone - applicationWillTerminate 在崩溃时被调用

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:56 25 4
gpt4 key购买 nike

我有一个应用程序需要知道它何时崩溃(用于调试目的)。当应用程序关闭时,它会在委托(delegate)中调用 - (void)applicationWillTerminate:(UIApplication *)application

根据我的理解,它不应该在应用程序崩溃时调用该行,但出于某种原因它会调用。 (如果应用程序没有崩溃,我有代码在 NSUserDefaults 中设置一个值,但如果它崩溃了,也不会改变任何东西。)

一些细节:当调用 - (void)applicationDidBecomeActive:(UIApplication *)application 时,我程序中的 NSUserDefaults 键设置为 YES。当 - (void)applicationWillTerminate:(UIApplication *)application 被调用时,相同的键被设置为 NO。下次启动时,应用程序会检查该键是否设置为 YES 或 NO。计划是检查 key 是否为 YES,如果是,则意味着它没有正确关闭(即崩溃)。

我应该用什么来检查它是否崩溃?

最佳答案

您的问题是写入 NSUserDefaults 不一定将该值同步到磁盘。通常,NSUserDefaults 将每 30 秒左右将更改同步到磁盘。发生的事情是您将 YES 存储在 NSUserDefaults 中,然后在同步到磁盘之前崩溃,因此在下次启动时它会再次返回到 NO。此处的修复是在存储 YES 值后调用 -[NSUserDefaults synchronize] 以强制磁盘同步立即发生。

请注意,由于 -synchronize 相对昂贵,因此您应该只在绝对需要确保立即将值写入磁盘时才使用它。你描述的情况符合条件。很少有其他情况。

关于iphone - applicationWillTerminate 在崩溃时被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com