我应该担心NSUserDefaults中的冲突吗?

时间:2009-06-02 00:30:25

标签: iphone objective-c cocoa cocoa-touch

在我正在处理的应用程序中,我正在生成用户名和密码并将其存储在[NSUserDefaults standardUserDefaults]中。我知道你可以从那里检索一些系统范围的信息;这是否意味着手机上的所有应用程序都可以访问其中的所有内容?我正在为我正在使用的键添加前缀,其中包含一些与我的应用程序名称相关的字符串,以避免与其他应用程序冲突,但这是必要的吗?如果是这样,有没有更好的方法来避免这种碰撞?

3 个答案:

答案 0 :(得分:8)

您还应将用户名和密码存储在钥匙串内,而不是用户默认值。在将数据备份到Mac时,将它们存储在用户默认值中会打开它们。

答案 1 :(得分:2)

没有。 NSUserDefaults不是系统范围的。无论你喜欢什么名字,你都会好的。 :)

答案 2 :(得分:1)

NSUserDefaults使用“搜索路径”的抽象概念来查找默认值。除非您自定义它,否则标准用户默认对象将在三个位置查看;启动参数,应用程序的首选项和系统首选项(例如全局本地化选项)。您还可以手动为其他搜索路径添加标识符,如果您想在多个应用程序之间共享相同的首选项(我没有尝试使用iPhone,所以我不确定它是否可用于Cocoa Touch或者如果您只能在OS X上执行此操作。

您可能与系统范围内的某个首选项存在冲突,但由于首先搜索了应用程序的搜索路径,因此这绝不是问题。