NSUserDefaults多久同步一次?

5
< p> NSUserDefaults 的文档中提到 synchronize 方法会定期调用,但没有明确说明多久调用一次。经过 10 分钟的谷歌搜索,没有找到任何相关信息。

synchronize 方法的调用频率是多少?


我们不知道。这是实现细节,您不应该依赖它。如果您需要持久化更改,请手动执行“-同步”。 - user529758
然而,如果你好奇它被调用的频率,为什么不对一个简单的 NSLog() 进行方法交换并自己找出呢? - user529758
没问题,我把它作为答案了。 - user529758
1个回答

8
这是一个未公开的实现细节(可能甚至不是常量时间间隔)。然而,你可以通过对- [NSUserDefaults synchronize]进行方法交换并更改其实现方式,使其在每次同步时调用NSLog()来自行找出它。

自从我开始运行程序以来已经过去了20分钟,即使在更改值后,synchronise仍未被调用。我已经正确地进行了交换。现在我放弃了。 - duci9y
@duci9y 好的,我明白了:不要依赖苹果,因为他们在作弊 :) 感谢您的接受。 - user529758
3
自动同步与手动同步并不通过相同的代码路径(具体而言,它是在CFPreferences中实现的,NSUserDefaults使用它)。在10.7和iOS上,它是在更改后大约15秒的时间间隔,但它并不是恒定的。在10.8+上,由于改进的同步性能,时间间隔较短。 - Catfish_Man
(此外,AppKit/UIKit 在各个地方调用 synchronize;例如,NSApplication 在应用程序终止时同步。) - Catfish_Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接