iOS:阅读NSUserDefaults vsvariables的速度

我有一个应用程序,它会立即调用variables。 这些variables存储在NSUserDefaults

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

哪个更快? variables或NSUserDefaults 。 因为使用variables来存储NSUserDefaults将是使用更多内存的原因。

NSUserDefaults将数据保存在磁盘上,所以在某些时候它必须从磁盘加载这些数据以便将其存储在内存中。 当你告诉它要synchronize时,它需要把它写回磁盘。

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

与直接读取variables相比,从两个磁盘读取数据是非常昂贵的,与读取variables相比,从字典中读取数据是相当昂贵的。

读/写variables要快得多。

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

数据被打包成plist表示,并且需要被存储到磁盘(至less在被同步的时候),或者从磁盘(或者caching,或者Apple认为适合的一些其他实现细节)中读取。 无论如何,使用默认值通常比使用一个简单的variables要慢很多。 用户默认设置越大,影响就越大,因为它最有可能每次都存储/读取所有数据 。 如果在您的使用情况下,重要的是我们无法回答的另一个问题。

使用适合您的需求的方法: NSUserDefault在应用程序启动之间持续设置,以及用于正常操作的variables。 将设置caching在本地variables中并且只保留更改(可能不是每次更改时)都没有问题。

如果担心保存variables中的数据需要内存,则应该使用CoreData。 你也可以考虑NSUserDefaults会占用内存:-)

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