我有一个应用程序,它会调用变量。
这些变量存储在NSUserDefaults
。
我想知道NSUserDefaults
存储在哪里?
如果我直接呼叫NSUserDefaults
而不是使用变量。
哪个更快?变量或NSUserDefaults
。因为使用变量存储NSUserDefaults
将导致使用更多内存。
答案 0 :(得分:6)
NSUserDefaults
将其数据保留在磁盘上,因此在某些时候它必须从磁盘加载该数据才能将其存储在内存中。当您将其告诉synchronize
时,需要将其写回磁盘。
一旦进入内存,它会将其存储在类似字典的容器中(可能是NSMutableDictionary
)。
与直接读取变量相比,从两个磁盘读取非常昂贵与读取变量相比,从字典读取中等成本。
很长一段时间,读取/写入变量的速度要快得多。
答案 1 :(得分:1)
NSUserDefaults
的用例与代码中的变量不同。
数据打包成plist表示,需要存储到磁盘(至少在它同步时),或从磁盘读取(或从缓存中读取,或Apple认为合适的其他一些实现细节)。在任何情况下,使用默认值通常应比使用简单变量慢得多。用户默认值越大,影响越大,因为它最有可能每次存储/读取所有。如果它在您的用例中很重要,那么我们无法回答一个不同的问题。
使用适合您需要的方法:NSUserDefault
在应用程序启动之间保持设置,并使用变量进行正常操作。将设置缓存在局部变量中并且只保留更改(可能不是每次都发生变化)都没有错。
答案 2 :(得分:0)
如果您担心将数据保存在变量中需要内存,那么您应该使用CoreData。您可能还会考虑NSUserDefaults将占用内存: - )
NSUserDefaults是持久性存储。如果您正确使用它,应用程序崩溃后数据将再次出现。将它用于下次运行应用程序时要记住的内容。使用变量可以在下次启动应用时重新开始。