【发布时间】:2011-11-18 17:48:10
【问题描述】:
我正在循环中进行计算密集型操作(数百个用于迭代公式)。在每个循环中,直接从 nsuserdefaults 获取值并计算并保存回来。我的问题是,我每次写入时是否应该使用 -synchronize 方法nsuserdefaults?.我认为不使用这种方法。我的应用程序运行得更快。使用同步是否会减慢计算速度
【问题讨论】:
标签: iphone performance nsuserdefaults
我正在循环中进行计算密集型操作(数百个用于迭代公式)。在每个循环中,直接从 nsuserdefaults 获取值并计算并保存回来。我的问题是,我每次写入时是否应该使用 -synchronize 方法nsuserdefaults?.我认为不使用这种方法。我的应用程序运行得更快。使用同步是否会减慢计算速度
【问题讨论】:
标签: iphone performance nsuserdefaults
使用同步会减慢计算速度吗?
是的,当然。 synchronize 将当前用户默认值写入磁盘。
每次写入 nsuserdefaults 时是否应该使用 -synchronize 方法?
不,绝对不是。如果您有一个很长的循环,您正在更改用户默认值,则这些值将保存在内存中。它不会打乱你的计算。只有在循环完成后才需要保存到磁盘。
synchronize 通常完成:
在你的情况下,在长循环之后,你想这样做是出于原因 3。
在循环中每次都这样做,您只是将值不必要地写入闪存,您可能会立即将其覆盖。
【讨论】:
不!你不应该。在applicationWillTerminate 中考虑synchronize。
【讨论】:
synchronize 代表写入磁盘。您可以在程序中使用NSUserDefaults 的共享实例(以及其中的值)。认为它只是一本字典。在程序结束时,您将这些值写入磁盘。
没有。从理论上讲,您根本不需要调用它,它会为您完成(它“定期自动调用”)。在实践中,最好在applicationWillResignActive: 中这样做。
【讨论】:
synchronize 只是用您在内存中保存的内容更新“磁盘”。