2011-11-18 93 views
1

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

回答

2

使用同步会减慢计算吗?

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

我应该每次使用-synchronize方法写入nsuserdefaults ?.

绝对没有。如果你有一个长循环,在你改变用户默认值的地方,这些值被保存在内存中。它不会搞乱你的计算。只有在完成循环后才需要保存到磁盘。

synchronize通常做:

  1. 手动,应用程序被终止或由系统发送到后台
  2. 自动每隔几分钟前
  3. 手动计划的一些重要变化做出后如果发生事故或突然断电,您不希望冒险失败。

在你的情况下,长循环之后,你想这样做的原因3.

通过每一次做内环路,你只是写不必要的值立刻闪,你可能覆盖。

1

不!你不应该。考虑到synchronizeapplicationWillTerminate

+0

我的问题是,假设在我的第一个循环中计算了一个值。基于这个值的下一个循环计算工作,现在如果系统没有在循环时间内调用同步方法,计算会出错......如果我正在调用appwill中的同步终止,有什么用? ? – sujith1406

+1

'synchronize'代表_write到disk_。你可以在你的程序中使用'NSUserDefaults'的共享实例(和那里的值)。考虑它只是一本字典。在程序结束时,您将这些值写入磁盘。 – debleek63

+1

@ debleek63:你应该将该评论添加到你的答案中,这是好东西。 – jrturton

1

不需要理论上你根本不需要调用它,它会为你完成(它会自动调用周期性的时间间隔)。在实践中,在applicationWillResignActive:中这样做是个好主意。

+0

但如果循环时间小于更新间隔将我的计算出错? – sujith1406

+0

不,“同步”只是用你在内存中保存的内容更新“磁盘”。 –