我有一个应用程序,显示设置页面ONCE!这是从应用商店首次下载的时间。之后,它只进入主页面。
但是当您双击iPhone按钮并移除应用程序时滑动应用程序,然后它会返回到设置页面。
以下是我的应用中的一些代码
didfinishwithOptions
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"SettingsShown"])
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SettingsShown"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"ShowBackButton"];
[[NSUserDefaults standardUserDefaults] synchronize];
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];
}
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"SettingsShown"] == NO)
{
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"SettingsShown"];
}
然后我放了
- (void)applicationWillTerminate:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"SettingsShown"];
NSLog(@"Application is terminated");
}
当您双击iPhone按钮时滑动应用程序时应该运行此操作。但它没有将用户默认设置为0,因为它再次从didfinishwithoptions运行设置页面。任何人都可以建议吗?
答案 0 :(得分:3)
放入NSUserDefaults
的任何值都不一定立即写入。例如,如果您的应用程序以某种不寻常的方式终止,则无法保证数据将被写入。
您可以使用synchronize:
强制系统写入NSUserDefaults
[[NSUserDefaults standardUserDefaults] synchronize]
将对持久域的任何修改写入磁盘,并将所有未修改的持久域更新为磁盘上的内容。 因为此方法是定期自动调用的,所以只有在您无法等待自动同步时(例如,如果您的应用程序即将退出)或者您希望将用户默认值更新为磁盘上的内容,请使用此方法你没有做任何改变。
这样做会有轻微的性能损失。