【问题标题】:How to make sure NSUserDefaults settings get saved to disk when the app quits?应用退出时如何确保 NSUserDefaults 设置保存到磁盘?
【发布时间】:2010-09-24 09:11:53
【问题描述】:

由于某种原因,由于多任务处理已经到来,NSUserDefaults 似乎不再在每次应用关闭时将设置保存到磁盘。

会发生这种情况: 当在 NSUserDefaults 中更改设置并按下主页按钮时,主屏幕变为可见。应用程序仍在后台运行。然后我按两次主页按钮,然后从任务管理器中删除该应用程序。应用程序现在真的退出了。然后我点击应用程序的图标再次启动它。 Voilla:设置未存储!错误,旧值!

但是当我这样做时,它会起作用:按主页按钮,再次点击应用程序图标,再次按主页按钮,现在双击主页按钮并终止应用程序。再次点击图标。现在应用程序显示正确的设置。

我从来没有明确地保存过 NSUserDefaults,因为它总是运行良好。但是现在,iOS 似乎还不够聪明,无法自动执行此操作......我可以在应用程序委托中的任何“应用程序将立即退出”方法中调用任何东西,以便真正保存 NSUserDefaults 字典吗?

【问题讨论】:

    标签: iphone nsuserdefaults


    【解决方案1】:

    NSUserDefaults 在发送synchronize 消息时保存更改:

    [[NSUserDefaults standardUserDefaults] synchronize];
    

    只有在应用程序终止时系统才会自动调用它。系统也会每隔几秒调用一次,这就是为什么在看到您的设置保存时会有明显的延迟。

    在 iOS 4 中,如果您让它支持多任务处理,应用程序实际上并不会完全终止(也称为退出)。如果您仍然想支持多任务处理,并且还希望用户在应用程序离开前台时默认保存,您可以在应用程序委托的applicationDidEnterBackground: 中调用上述消息,如下所示:

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
    

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 2011-09-04
      相关资源
      最近更新 更多