读取 NSUserDefaults 与变量的速度

Speed of reading NSUserDefaults vs variables

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

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

哪个更快?变量或 NSUserDefaults。因为使用变量存储NSUserDefaults会是占用内存较多的原因

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

时,它需要将其写回磁盘

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

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

Reading/writing 从长远来看,它的变量要快得多。

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

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

使用适合您需要的方法:NSUserDefault 在应用程序启动之间保留设置,以及用于正常操作的变量。将设置缓存在局部变量中并只持久化更改(也许不是每次更改时)都没有错。

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

NSUserDefaults 是持久 存储。如果你使用得当,数据将在你的应用程序崩溃后再次存在。将它用于下次运行应用程序时要记住的事情。将变量用于可以在您的应用程序下次启动时重新开始的事物。