为什么不建议使用NSUserDefault存储大量数据

简单介绍一下NSUserDefaults,原理上看NSUserDefaults 其实是在操作一个 plist 文件。读取NSUserDefaults值的时候会默认在内存中缓存下来一份,所以NSUserDefaults的读取速度比较快。正常情况下,我们后面对NSUserDefaults的读取都是从内存中读取的,经测试删除.plist文件后,依然可以正常读取,基本可以证明这一点。NSUserDefaults 的存储目录是在/Library/Preferences下的一个.plist文件,该路径可通过配置实现iTunes共享文件。可被iTunes备份。

1: 即使只是修改一个 key 都会 load 整个文件,不适合存储大量数据。

2:NSUserDefaults是保存成文本格式的,容易被破解,解析效率也比较低。所以数据太大的时候,解析起来就慢了。

3:NSUserDefaults你每次同步都要全写,打开要全读。小数据连同大数据一起操作了,IO以及内存都不划算,况且还有解析、序列化的成本。大数据建议弄出去,别跟NSUserDefaults这种经常存取的弄一起。

4:要注意的是NSUserDefault存储的都是不可变(immutable)的数据,就算是将NSMutableArray存到NSUserDefault,读取出来之后还是会变成NSArray类型的。

你可能感兴趣的:(为什么不建议使用NSUserDefault存储大量数据)