首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否必须调用NSUserDefaults synchronize方法?

是否必须调用NSUserDefaults synchronize方法?
EN

Stack Overflow用户
提问于 2016-05-27 21:45:02
回答 4查看 7.5K关注 0票数 16

任何人请帮帮我:调用NSUserDefaultssynchronize()方法是强制的吗?如果我不调用它,会发生什么?我的应用程序没有它也能正常工作。

EN

回答 4

Stack Overflow用户

发布于 2017-11-16 01:06:27

No

从iOS12开始,它不再是强制性的。苹果says

这个方法是不必要的,也不应该使用。

您可以在iOS12 release note上找到更多信息

UserDefaults

NSUserDefaults有几个错误修复和改进:

删除了同步要求。不再需要使用synchronize、CFPreferencesAppSynchronize或CFPreferencesSynchronize。这些方法将在操作系统的未来版本中弃用。

现在您不需要调用这些同步方法,NSUserDefaults和首选项实用程序的性能特征略有不同:将写入操作入队所用的时间现在由写入线程支付,而不是由调用synchronize或执行读取操作的下一个线程支付。

票数 23
EN

Stack Overflow用户

发布于 2016-05-27 21:47:13

docs

因为此方法是定期自动调用的,所以仅当您无法等待自动同步(例如,如果您的应用程序即将退出),或者即使您没有进行任何更改也要将用户默认设置更新为磁盘上的内容时,才使用此方法。

这意味着,如果您在将某些内容写入默认值后立即终止应用程序,而没有定期间隔捕获它,它将会丢失。您可能还没有在写入事件之后立即终止应用程序,这就是为什么到目前为止您的应用程序似乎工作得很好的原因。

票数 17
EN

Stack Overflow用户

发布于 2016-05-27 21:50:54

通常情况下,它工作得很好,你只需要在特殊情况下使用它,例如,当应用程序在写入NSUserDefaults后直接关闭时。因此,您可以简单地将synchronize方法添加到相应的AppDelegate-method中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37485109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档