nsuserdefaults synchronize方法会降低应用程序的速度

时间:2011-11-18 17:48:10

标签: iphone performance nsuserdefaults

我正在循环中进行计算密集型操作(数百次用于迭代公式)。在每个循环中,值直接从nsuserdefaults获取并计算并保存回来。我的问题是我应该每次写入时使用-synchronize方法nsuserdefaults?.i认为不使用这种方法。我的应用程序运行得更快。使用同步是否会减慢计算量

3 个答案:

答案 0 :(得分:2)

  

使用同步会减慢计算速度吗?

是的,绝对的。 synchronize将当前用户默认值写入磁盘。

  

我每次写入nsuserdefaults时都应该使用-synchronize方法吗?

绝对不是。如果您有一个长循环,您正在更改用户默认值,则值将保存在内存中。它不会弄乱你的计算。完成循环后,只需要保存到磁盘。

synchronize通常会完成:

  1. 手动,在应用终止或发送到后台之前
  2. 每隔几分钟由系统自动
  3. 在进行了一些重要更改之后由程序手动执行,以防您在发生崩溃或突然断电时不想冒失败的风险。
  4. 在你的情况下,在长循环之后,你想要出于原因3。

    每次在循环中执行此操作时,您只是不必要地将值写入闪存,这可能会立即覆盖。

答案 1 :(得分:1)

没有!你不应该。考虑synchronize中的applicationWillTerminate

答案 2 :(得分:1)

没有。从理论上讲,你根本不需要调用它,它将为你完成(它“定期自动调用”)。实际上,在applicationWillResignActive:中这样做是个好主意。