1

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

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

和/或

anObject = [self.myDefaults objectForKey:someKey];

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

我只会synchronize在循环完成后调用。

4

2 回答 2

3

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

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

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

于 2012-05-11T02:28:55.247 回答
0

据我了解,NSUserDefaults 并不是存储大量数据的最佳数据存储。对于较大的数据集,建议写入 plist 或 sqlite。用户默认值仅用于一些用户偏好设置,而不是像典型数据库那样为“存储数据”而构建。

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

于 2012-05-11T02:32:11.240 回答