我在application delegate中的applicationWillTerminate中有以下代码:
NSLog(@"Source: %d", [[NSUserDefaults standardUserDefaults] integerForKey:@"Source"]);
我的applicationDidFinishLaunching在同一个app delegate中有相同的代码。
当我退出应用程序时,日志显示一个值(比如101),当我重新启动应用程序时,日志显示另一个值(比如105)。随后在用户默认值中更改值(比如102)可以正常工作,因为当我再次退出app时,在applicationWillTerminate方法中记录了正确的值(此时间102)。但是,重复重新启动应用程序日志105,而不管值的变化是什么。
如果我从模拟器中删除该应用并重新启动它,则会在启动时显示完全不同的值,并且此值会一直显示在后续启动中。
我不知道这里发生了什么。有人有什么想法吗?
答案 0 :(得分:4)
我不知道启动之间的价值变化而不费力,但是当您设置首选项键的值时,该值不会“保存”。您需要先在synchronize
对象上调用NSUserDefault
。
e.g。
[_defaults setInteger:1 forKey:@"key"];
[_defaults synchronize];