NSUserDefaults 与内存

来源:互联网 发布:淘宝开店代销怎么发货 编辑:程序博客网 时间:2024/05/12 16:00
NSUserDefaults被设计用来存储设备和应用的配置信息,它通过一个工厂方法返回默认的、也是最常用到的实例对象。这个对象中储存了系统中用户的配置信息,开发者可以通过这个实例对象对这些已有的信息进行修改,也可以按照自己的需求创建新的配置项。

NSUserDefaults把配置信息以字典的形式组织起来,支持字典的项包括:字符串或者是数组,除此之外还支持数字等基本格式。一句话概括就是:基础类型的小数据的字典。操作方法几乎与NSDictionary的操作方法无异,另外还可以通过指定返回类型的方法获取到指定类型的返回值。

以上是开场白,下面请注意:


NSUserDefaults的所有数据都放在内存里,因此操作速度很快,并还提供一个归档方法:+ (void)synchronize。开发者自定义的配置项(如图2中的最后一项 key:alkdjfkladsjfmm)会以plist格式的文件归档在相应应用目录的/Library/Preferences/[App_Bundle_Identifier].plist文件。再次初始化获得实例对象后,框架会把用户自定义的这个配置和系统配置合并得到完整数据。


这句话就是说 当你加载一次 NSUserDefaults后,他会把全部的数据都载入到内存里边,而且之后就是常驻内存了.

再想一想, 你辛辛苦苦折腾他了老半天,就为了节省那么一点内存,哪知道加载NSUserDefaults就会浪费些许内存,一旦你把大规模的数据全部存到NSUserDefaults,这样的结果可能是灾难性的!


所以,NSUserDefaults存储大量数据最好别用,还是去找sqlite 和CoreData比较好




原创粉丝点击