在NSUserDefaults中重复设置密钥对象是否有任何性能或其他后果?
[self.myDefaults setObject:someObject forKey:someKey];
和/或
anObject = [self.myDefaults objectForKey:someKey];
我的循环将在一秒内重复约100次,并且一次只能持续几秒钟。
我只会在循环结束后调用synchronize
。
答案 0 :(得分:3)
NSUserDefaults docs州: “NSUserDefaults缓存信息,以避免每次需要默认值时都必须打开用户的默认数据库。”
因此,从内存中的字典变量设置或获取对象没有什么不同。
但是,在类型循环中调用[self.myDefault synchronize];
会产生性能后果,因为这会打开并写入磁盘上的默认数据库。
答案 1 :(得分:0)
根据我的理解,NSUserDefaults不是大量数据的最佳数据存储。建议写入plists或sqlite以获取更大的数据集。用户默认设置仅适用于少数用户首选项设置,并非像典型数据库那样为“存储数据”而构建。
但是,除非您正在为每次迭代进行同步,否则您不应该在循环中遇到性能问题。