joh*_*ohn 11 macos xcode cocoa objective-c
我在使用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"]);
Run Code Online (Sandbox Code Playgroud)
在"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).
希望这不仅仅发生在我身上并且感谢任何帮助!
CRD*_*CRD 20
这是一个与您正在使用的Xcode版本没有直接关系的OS X问题.Apple的官方路线是删除plist文件以删除首选项从未得到官方支持,并且在最近的OS X版本中,由于首选项的存储方式发生了变化,因此不可靠.
删除首选项的支持方法是使用defaults终端上的命令,例如:
defaults delete application.bundle.identifier
Run Code Online (Sandbox Code Playgroud)
该defaults命令还可以在首选项中删除/更改单个设置.详情请见man defaults.
| 归档时间: |
|
| 查看次数: |
3188 次 |
| 最近记录: |