新手问题。如果我将一个对象设置到 NSUserDefault 中,我是否还需要同步以确保该对象永久返回到 NSUserDefault 数据库中?我想我要问的是,“setobject”是将对象永久放回到数据库中还是放入需要同步以确保永久存储的临时存储中?
例如:
// 下面我在添加一行数据后在 NSUserDefaults 中放置了一个新的列表副本
userDefaults.setObject(newMutableList, forKey: "itemList")
//我是否还需要立即同步以确保数据库永久更新?
userDefaults.synchronize()
我的代码无需同步即可工作,这意味着我不需要它。但我想确保跳过使用同步不会在将来的另一种情况下导致问题。
提前致谢。
在 iOS 7 及更早版本上:
当您调用 -setObject:forKey: 时,NSUserDefaults 会在未来大约 10 秒内自行安排同步操作。当发生这种情况时,到目前为止的所有内容都会保存到持久存储中。这里的想法是,您可以自由地使用 set 和 get 方法,而无需每次都付出显着的性能成本。
在 iOS 8 上,NSUserDefaults 的工作方式有所不同,延迟为几毫秒,而不是 10 秒,因此 -synchronize 几乎没有用。
在 iOS 12 上,所有剩余的 -synchronize 用法都是不必要的。请注意,应用程序可能仍然希望调用它,因为它们支持 iOS 11 及更早版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)