重复设置 NSUserDefaults 中的 key 对象是否有任何性能或其他后果?
[self.myDefaults setObject:someObject forKey:someKey];
和/或
anObject = [self.myDefaults objectForKey:someKey];
我的循环将在一秒钟内重复大约 100 次,并且一次只持续几秒钟。
我只会synchronize
在循环完成后调用。
重复设置 NSUserDefaults 中的 key 对象是否有任何性能或其他后果?
[self.myDefaults setObject:someObject forKey:someKey];
和/或
anObject = [self.myDefaults objectForKey:someKey];
我的循环将在一秒钟内重复大约 100 次,并且一次只持续几秒钟。
我只会synchronize
在循环完成后调用。
NSUserDefaults 文档状态: “ NSUserDefaults 缓存信息以避免每次需要默认值时都必须打开用户的默认数据库。”
因此,从内存字典变量中设置或获取对象没有什么不同。
但是,在类型循环中调用[self.myDefault synchronize];
会产生性能影响,因为这会打开并写入磁盘上的默认数据库。
据我了解,NSUserDefaults 并不是存储大量数据的最佳数据存储。对于较大的数据集,建议写入 plist 或 sqlite。用户默认值仅用于一些用户偏好设置,而不是像典型数据库那样为“存储数据”而构建。
但是,您不应该在循环中真正遇到性能问题,除非您正在为每次迭代进行同步。