gpt4 book ai didi

Objective-C NSUserDefaults 缓存阻止另一个应用程序准确读取更改

转载 作者:行者123 更新时间:2023-12-04 18:21:07 24 4
gpt4 key购买 nike

我有一个设置首选项的应用程序。它使用这些首选项,另一个应用程序也是如此。当我在第二个应用程序中使用以下代码时,它会正确读取一次首选项。

    NSUserDefaults* settings = [NSUserDefaults standardUserDefaults];
[settings addSuiteNamed:@"com.WVS.Wrestling-Tools"];
[settings synchronize]; // this just a shot in the dark.. didn't work

[self setScoreboardIndex:[settings integerForKey:@"matName"]];

在随后调用相同代码时,我得到 [settings integerForKey:@"matName"] 始终是第一次读取的值。

在第一个应用程序中,我使用共享用户默认 Controller 来读取/写入首选项。不确定这对这个问题是否重要。

如何强制第二个应用程序始终获取最新值?

最佳答案

您应该可以调用+[NSUserDefaults resetStandardUserDefaults]在第二个程序中强制+[NSUserDefaults standardUserDefaults]创建一个新实例并在下次调用时从磁盘重新加载值。调用-synchronize在第一个程序中是确保将更新的默认值写入磁盘的正确方法(我不确定 NSUserDefaultsController 在这方面的行为)。

请注意,调用 +[NSUserDefaults resetStandardUserDefaults]如果您经常访问standardUserDefaults,每次访问可能会导致性能下降,因为这可能意味着每次读取都会命中磁盘。

关于Objective-C NSUserDefaults 缓存阻止另一个应用程序准确读取更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667848/

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