iOS:读取NSUserDefaults与变量的速度

时间:2016-05-24 10:13:36

标签: ios performance variables nsuserdefaults

我有一个应用程序,它会调用变量。 这些变量存储在NSUserDefaults

我想知道NSUserDefaults存储在哪里? 如果我直接呼叫NSUserDefaults而不是使用变量。

哪个更快?变量或NSUserDefaults。因为使用变量存储NSUserDefaults将导致使用更多内存。

3 个答案:

答案 0 :(得分:6)

NSUserDefaults将其数据保留在磁盘上,因此在某些时候它必须从磁盘加载该数据才能将其存储在内存中。当您将其告诉synchronize时,需要将其写回磁盘。

一旦进入内存,它会将其存储在类似字典的容器中(可能是NSMutableDictionary)。

与直接读取变量相比,从两个磁盘读取非常昂贵与读取变量相比,从字典读取中等成本

很长一段时间,读取/写入变量的速度要快得多。

答案 1 :(得分:1)

NSUserDefaults的用例与代码中的变量不同。

数据打包成plist表示,需要存储到磁盘(至少在它同步时),或从磁盘读取(或从缓存中读取,或Apple认为合适的其他一些实现细节)。在任何情况下,使用默认值通常应比使用简单变量慢得多。用户默认值越大,影响越大,因为它最有可能每次存储/读取所有。如果它在您的用例中很重要,那么我们无法回答一个不同的问题。

使用适合您需要的方法:NSUserDefault在应用程序启动之间保持设置,并使用变量进行正常操作。将设置缓存在局部变量中并且只保留更改(可能不是每次都发生变化)都没有错。

答案 2 :(得分:0)

如果您担心将数据保存在变量中需要内存,那么您应该使用CoreData。您可能还会考虑NSUserDefaults将占用内存: - )

NSUserDefaults是持久性存储。如果您正确使用它,应用程序崩溃后数据将再次出现。将它用于下次运行应用程序时要记住的内容。使用变量可以在下次启动应用时重新开始。