“+ resetStandardUserDefaults”实际上做了什么?

时间:2011-03-28 13:18:58

标签: objective-c cocoa

尝试使用NSUserDefaults类的“+ resetStandardUserDefaults”将默认值重置为“factory”设置。事实证明,这不是适当的使用方法。从SO中的一些存档讨论中可以看出,我们应该使用实例方法“removeObjectForKey”来删除用户的设置。

但我只是好奇并希望有人能解释“+ resetStandardUserDefaults”的实际用法。已阅读有关此内容的参考网络手册。但它非常简短,我似乎没有得到它的真正意义......

1 个答案:

答案 0 :(得分:1)

某处(通常在app delegate + initialize中),您声明标准用户默认值(首次启动时应用的首选项)。 + resetStandardUserDefaults使你的应用程序意味着它是第一次启动并使用用户默认值,就像你在app delegate中声明它们一样。

以上是错误的答案

正如Apple's documentation所说:

同步对共享用户默认值对象所做的任何更改并将其从内存中释放

重置部分指的是 standardUserDefaults 对象在内存中被破坏的事实,因此您从文件系统中获得了一个新的下次使用[NSUserDefaults standardUserDefaults]时,它与任何首次启动行为无关。

如果将其重命名为 flushDefaultsToDisk 或类似名称,则该调用有意义。这是迄今为止我见过的iOS SDK中最容易被误解的部分。

(我对此进行了更正,因为这对搜索率非常高,并且不希望将更正放在有人可能无法阅读的评论中。)