gpt4 book ai didi

ios - NSUserDefaults 同步不保存

转载 作者:可可西里 更新时间:2023-11-01 02:59:01 26 4
gpt4 key购买 nike

我有一个测试人员提交的错误,如果他执行一个操作然后重新启动他的手机(通过按下主页和 sleep /唤醒按钮几秒钟),应用程序不会保持状态。

我已经能够重现这个问题。 [NSUserDefaults 同步] 正在 被调用,但是当我在重启后重新启动应用程序时,NSUserDefaults 中的值没有保存。

有谁知道是否将存储同步到缓冲区,然后再保存到磁盘?如果是这样,我如何刷新缓冲区(我认为同步与刷新相同,但显然不是。)

(编辑)换句话说:

assert([[NSUserDefaults standardUserDefaults] boolForKey: MY_KEY] == NO);
[[NSUserDefaults standardUserDefaults] setBool: YES forKey: MY_KEY];
[[NSUserDefaults standardUserDefaults] synchronize];

将应用程序留在前台并在调用上述方法后重新启动设备,然后重新启动设备并重新运行应用程序。断言应该第二次触发,但有时不会。

非常具体...我创建了一个单 View 应用程序并将以下代码放入 viewDidLoad

#define MY_KEY @"MY_KEY"

- (void)viewDidLoad
{
[super viewDidLoad];
BOOL key = [[NSUserDefaults standardUserDefaults] boolForKey: MY_KEY];
NSLog(@"[[NSUserDefaults standardUserDefaults] boolForKey: MY_KEY] == %@", key ? @"YES" : @"NO");
[[NSUserDefaults standardUserDefaults] setBool: !key forKey: MY_KEY];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"reboot now.");
}

这是应用程序运行三次的输出:

2013-05-31 12:17:44.127 syncTest[162:907] [[NSUserDefaults standardUserDefaults] boolForKey: MY_KEY] == YES
2013-05-31 12:17:44.133 syncTest[162:907] reboot now.
2013-05-31 12:18:49.771 syncTest[128:907] [[NSUserDefaults standardUserDefaults] boolForKey: MY_KEY] == NO
2013-05-31 12:18:49.778 syncTest[128:907] reboot now.
2013-05-31 12:19:41.388 syncTest[124:907] [[NSUserDefaults standardUserDefaults] boolForKey: MY_KEY] == NO
2013-05-31 12:19:41.397 syncTest[124:907] reboot now.

请注意,输出是“YES, NO, NO”,但它应该是“YES, NO, YES”

最佳答案

我遇到了同样的问题,我发现我在不同的类上有两个 [NSUserDefaults standardUserDefaults] 对象的引用,因为 nsdefault 是一个单例类,所以如果你可能已经引用了 [NSUserDefaults standardUserDefaults] 尝试从第一个引用开始完成它,让实例从那里释放出来,然后在您的其他类中调用该实例并希望同步完成

关于ios - NSUserDefaults 同步不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16861142/

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