Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone nsuserdefaults同步方法会降低应用程序的速度_Iphone_Performance_Nsuserdefaults - Fatal编程技术网

Iphone nsuserdefaults同步方法会降低应用程序的速度

Iphone nsuserdefaults同步方法会降低应用程序的速度,iphone,performance,nsuserdefaults,Iphone,Performance,Nsuserdefaults,我在循环中执行计算密集型操作(迭代公式有数百个)。在每个循环中,直接从nsuserdefaults获取值,然后计算并保存回来。我的问题是,每次写入nsuserdefaults时是否应使用-synchronize方法?我认为不使用此方法。我的应用程序运行得更快。使用同步是否会减慢计算速度?否!你不应该。考虑到同步< /代码> 应用程序将终止 .< /P> < P>不!你不应该。考虑到同步< /COD> 应用程序将终止 < P>不。理论上,您根本不需要调用它,它将为您完成(它是以周期性间隔自动调用

我在循环中执行计算密集型操作(迭代公式有数百个)。在每个循环中,直接从nsuserdefaults获取值,然后计算并保存回来。我的问题是,每次写入nsuserdefaults时是否应使用-synchronize方法?我认为不使用此方法。我的应用程序运行得更快。使用同步是否会减慢计算速度?否!你不应该。考虑到<代码>同步< /代码> <代码>应用程序将终止 .< /P> < P>不!你不应该。考虑到<代码>同步< /COD> <代码>应用程序将终止

< P>不。理论上,您根本不需要调用它,它将为您完成(它是以周期性间隔自动调用的)。实际上,在
应用程序willresignactive:

中这样做是一个好主意。理论上,您根本不需要调用它,它将为您完成(它“定期自动调用”)。实际上,最好在
应用程序willresignactive:
中这样做

使用同步是否会降低计算速度

是的,绝对是<代码>同步将当前用户默认值写入磁盘

每次写入nsuserdefaults?时是否应使用-synchronize方法

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

同步
通常在以下情况下完成:

  • 手动,在应用程序终止或发送到后台之前
  • 系统每隔几分钟自动执行一次
  • 在进行一些重要更改后,由程序手动执行,您不希望在发生碰撞或突然断电时冒丢失的风险
  • 在您的情况下,在长循环之后,您希望出于原因3这样做

    通过在循环中每次都这样做,您只是不必要地将值写入flash,您可能会立即覆盖这些值

    使用同步是否会降低计算速度

    是的,绝对是<代码>同步将当前用户默认值写入磁盘

    每次写入nsuserdefaults?时是否应使用-synchronize方法

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

    同步
    通常在以下情况下完成:

  • 手动,在应用程序终止或发送到后台之前
  • 系统每隔几分钟自动执行一次
  • 在进行一些重要更改后,由程序手动执行,您不希望在发生碰撞或突然断电时冒丢失的风险
  • 在您的情况下,在长循环之后,您希望出于原因3这样做


    通过每次在循环中这样做,您只是不必要地将值写入flash,您可能会立即覆盖它。

    我的问题是,假设在我的第一个循环中计算了一个值。基于此值,下一个循环计算工作,现在如果系统在循环时间内没有调用synchronize方法。计算是否会出错……如果我在应用程序中调用synchronize,有什么用?将终止???
    synchronize
    表示写入磁盘。您可以在程序中使用
    NSUserDefaults
    (以及其中的值)的共享实例。认为这只是一本字典。在程序结束时,您将这些值写入磁盘。@debleek63:您应该将该注释添加到您的答案中,这是一个好东西。我的问题是,假设在我的第一个循环中计算了一个值。基于此值,下一个循环计算工作,现在如果系统在循环时间内没有调用synchronize方法。计算是否会出错……如果我在应用程序中调用synchronize,有什么用?将终止???
    synchronize
    表示写入磁盘。您可以在程序中使用
    NSUserDefaults
    (以及其中的值)的共享实例。认为这只是一本字典。在程序结束时,您将这些值写入磁盘。@debleek63:您应该将该注释添加到您的答案中,这是一个好东西。但是如果循环时间小于更新间隔,我的计算会出错吗?不,
    同步
    只更新“磁盘”但是如果循环时间小于更新间隔,我的计算会出错吗?不,
    同步
    只是用您在内存中保存的内容更新“磁盘”。