在使用 NSUserDefaults 时,我遇到了关于在 Xcode 5 上编写 osx 应用程序的问题。通常,我们只是[[NSUserDefaults standardUserDefaults] setObject:@"This is an object" forKey:@"Test"]
用来记住用户的偏好。之后,应用程序将在 ~/Library/Preferences/application.bundle.identifier.plist 处生成一个 plist 文件。
问题是,在我删除 plist 文件后,应用程序仍然可以获得我存储的首选项。即使我尝试清理项目、重新启动 xcode、删除派生文件夹中的文件,也无法清除该 plist。我解决这个问题的唯一方法是重新启动系统,所以我猜内存中存储了一些东西。问题是如何清除这些存储的首选项?(我觉得调试测试的时候手动添加代码来清除偏好不太方便。)而且我试过Xcode 4.x之前的版本,没有这个问题。任何有兴趣的人都可以创建一个新的可可项目,并添加如下代码:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"This is an object." forKey:@"Test"];
NSLog(@"%@", [defaults objectForKey:@"Test"]);
在“applicationDidFinishLaunching”下。然后去删除~/Library/Preferences/application.bundle.identifier.plist
。之后, [defaults setObject:@"This is an object." forKey:@"Test"];
在您的代码中注释行:并再次运行应用程序。控制台仍会显示"This is an object."
我的环境是 Mavericks GM 和 Xcode 5.0(5a1413)。
希望这不仅仅是发生在我身上的事情,感谢任何帮助!