【问题标题】:Should I worry about collisions in NSUserDefaults?我应该担心 NSUserDefaults 中的冲突吗?
【发布时间】:2009-06-02 00:30:24
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c cocoa cocoa-touch


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      没有。 NSUserDefaults 不是系统范围的。给他们起任何你喜欢的名字,你会没事的。 :)

      【讨论】:

        【解决方案3】:

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

        您可能会与系统范围的首选项之一发生冲突,但由于首先搜索您的应用程序的搜索路径,这绝不是问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-19
          相关资源
          最近更新 更多