【发布时间】:2016-04-08 09:24:11
【问题描述】:
我在我的应用程序中使用此代码:
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"First_RUN"] == NULL) {
[self tutorial:nil];
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"First_RUN"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
我正在使用此代码来了解应用程序第一次运行的时间,如果是这种情况,我会展示一个教程。 升级到 9.3.1 后,我发现它停止工作,因此每次应用程序运行时都会出现教程。 尝试对此进行调试,但似乎 [NSUserDefaults standardUserDefaults] 刚刚停止工作。
我正在为这个应用程序使用旧的 Xcode (6.4)。以其他方式使用 [NSUserDefaults standardUserDefaults] 的任何帮助或对此问题的解释都会有所帮助(我的许多应用程序中都有这种代码,现在都中断了)。
只是为了说清楚。这段代码在 iOS 9.3 上完美运行,但在 iOS 9.3.1 上却不行,我猜是有什么东西坏了或改变了。
更新:我为此创建了一个测试项目(以隔离问题),模拟器似乎很好,但即使使用 Xcode 7.3 在 9.3.1 设备上运行也会产生同样的问题:https://sidan5@bitbucket.org/sidan5/nsuserdefaultsdemo.git
【问题讨论】:
-
是的,甚至把它放在 setInteger 调用之后。不工作。这个应用程序运行了多年,所以我认为有问题......
-
synchronize被高估且不需要。 ;-) -
这似乎是一个 iOS 错误。我仍然遇到 NSUserDefaults 偶尔无法在 9.3.2 上加载的问题。 Apple 开发者论坛上有一个关于它的帖子:forums.developer.apple.com/thread/44264
标签: ios xcode6 nsuserdefaults ios9.3