iOS - setObject与Synchronize

4 nsuserdefaults ios swift

新手问题.如果我将对象设置为NSUserDefault,我还需要同步以确保对象永久返回NSUserDefault数据库吗?我想我要问的是,是"setobject"将对象永久地放回数据库中还是放入需要同步的一些临时存储中以确保永久存储?

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

userDefaults.setObject(newMutableList, forKey: "itemList")
Run Code Online (Sandbox Code Playgroud)

//我还需要立即同步以确保永久保存数据库更新吗?

userDefaults.synchronize() 
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Cat*_*Man 9

在iOS 7及更早版本中:

当您调用-setObject:forKey:时,NSUserDefaults将来会调度同步操作大约10秒钟.发生这种情况时,到目前为止的所有内容都会保存到持久存储中.这里的想法是你可以自由地使用set和get方法,而无需每次都花费大量的性能成本.

在iOS 8上,NSUserDefaults的工作方式不同,延迟是几毫秒,而不是10秒,所以-synchronize几乎从来没用过.

在iOS 12上,不需要使用-synchronize的所有剩余使用.请注意,应用程序可能仍然需要调用它,因为它们支持iOS 11及更早版本.

  • 谢谢这对了解IOS8很有帮助 (2认同)