在紧密循环中读取或写入NSUserDefaults是不是很糟糕?

时间:2012-05-11 02:15:16

标签: ios object loops nsuserdefaults

在NSUserDefaults中重复设置密钥对象是否有任何性能或其他后果?

[self.myDefaults setObject:someObject forKey:someKey];

和/或

anObject = [self.myDefaults objectForKey:someKey];

我的循环将在一秒内重复约100次,并且一次只能持续几秒钟。

我只会在循环结束后调用synchronize

2 个答案:

答案 0 :(得分:3)

NSUserDefaults docs州: “NSUserDefaults缓存信息,以避免每次需要默认值时都必须打开用户的默认数据库。”

因此,从内存中的字典变量设置或获取对象没有什么不同。

但是,在类型循环中调用[self.myDefault synchronize];会产生性能后果,因为这会打开并写入磁盘上的默认数据库。

答案 1 :(得分:0)

根据我的理解,NSUserDefaults不是大量数据的最佳数据存储。建议写入plists或sqlite以获取更大的数据集。用户默认设置仅适用于少数用户首选项设置,并非像典型数据库那样为“存储数据”而构建。

但是,除非您正在为每次迭代进行同步,否则您不应该在循环中遇到性能问题。