iOS – setObject与Synchronize

新手问题。 如果我设置一个对象到NSUserDefault,我也需要同步,以确保对象永久返回到NSUserDefault数据库? 我想问的是,“setobject”会将对象永久地放回到数据库中,还是放入需要同步的临时存储器中,以确保永久存储?

例如://下面我添加一行数据后,在NSUserDefaults中放置一个新的副本

userDefaults.setObject(newMutableList, forKey: "itemList") 

//我是否也需要立即同步以确保数据库永久更新?

 userDefaults.synchronize() 

我的代码工作没有同步,这意味着我不需要它。 但是我想确保在未来的另一种情况下跳过同步的使用不会导致问题。

提前致谢。

在iOS 7和更早版本上:

当你调用-setObject:forKey:的时候,NSUserDefaults将来会调度同步操作约10秒。 当发生这种情况时,到目前为止的所有内容都被保存到持久存储器中 这里的想法是,你可以自由地使用这个集合并且获得方法,而不必每次都花费大量的性能开销。

在iOS 8上,NSUserDefaults的工作方式不同,延迟时间只有几毫秒,而不是10秒,所以-synchronize几乎是没有用的。

您可以立即使用同步来更新数据库。 如果你不使用同步,IOS会为你做,但只是定期。 每次进行任何更改时都使用同步的最佳做法,以便在应用程序崩溃时用户所做的所有更改都不会丢失。