【发布时间】:2013-10-07 20:59:39
【问题描述】:
我正在开发一个为 Mountain Lion 开发的 Mac OS X 应用程序。该应用程序在第一次运行时会执行一些设置任务。然后它在[NSUserDefaults standardUserDefaults] 中设置一个标志;在随后的运行中,应用程序会检查是否设置了该标志,如果设置了,则不会执行这些首次设置任务。
在 Mountain Lion 上,我能够删除 ~/Library/Preferences/bundleid.plist 文件以清除应用程序存储在 NSUserDefaults 中的所有内容。但是,在最新版本的 Mac OS X 上,当应用程序运行时,它甚至不会创建该文件。我通过在调试器中检查从[[NSUserDefaults standardUserDefaults] objectForKey:@"foo"] 返回的值来验证它是否成功地将数据保存到 NSUserDefaults。
关于如何删除存储在 NSUserDefaults 中的应用设置,谁能指出我正确的方向?
【问题讨论】:
-
小牛队仍处于保密协议下,所以我怀疑任何人都可以直接回答你的问题。也就是说,您是否尝试过使用 fs_usage(一种适用于所有 OS X 版本的工具)来查看应用程序试图将 plist 保存在哪里?
-
哎呀,我的错 - 我删除了对小牛队的引用。
-
我认为这是安全的,不过:devforums.apple.com/message/894120
-
@Greg:你的问题仍然是关于小牛队的。代号不在 NDA 之下(Apple 公开宣布),但在 Mavericks 出来之前,它存储或不存储偏好文件的位置是。
-
@PeterHosey:我正在尽力使这个问题版本保持中立。仅供参考,数据最终会写入 ~/Library/Preferences 下的文件;它只是没有那么快发生。
标签: objective-c macos cocoa nsuserdefaults