为了账号安全,请及时绑定邮箱和手机立即绑定

什么时候以及为什么要使用NSUserDefaults的syncnize()方法?

什么时候以及为什么要使用NSUserDefaults的syncnize()方法?

牛魔王的故事 2019-10-21 13:15:53
因此,我看了关于NSUserDefaults的syncnize()方法的苹果文档。请参阅以下参考:https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize该页面当前显示为:因为此方法是定期自动调用的,所以仅当您无法等待自动同步时(例如,如果您的应用程序将要退出),或者您想要将用户默认值更新为磁盘上的默认值时,才使用此方法。您尚未进行任何更改。但是,我仍然不明白的是什么时候应该调用此方法?例如,是否应在用户每次更改应用程序设置时调用它?还是我应该相信后台api能够处理这个问题?内存中的设置更改后立即离开视图是否会导致该更改丢失?此外,何时无法调用syncnize()导致用户设置未正确更改?此外,调用此方法的成本(性能,内存或其他方面)是多少?我知道这涉及到磁盘读/写操作,但是这真的需要花很多精力在手机上吗?
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

如预期的那样,已弃用,如Apple Doc中所述


同步()


等待对默认数据库的所有未决异步更新并返回;此方法是不必要的,不应使用。


原始答案


synchronize打算提到被弃用这里


- 不建议使用sync,并且在以后的版本中将使用NS_DEPRECATED宏进行标记。


-synchronize阻塞调用线程,直到所有正在进行的设置操作完成为止。这不再是必需的。对-synchronize先前使用的替换取决于调用sync的意图。如果您已同步…


—…在读取之前,为了获取更新的值:删除同步调用


—…在编写后通知另一个程序读取:另一个程序可以使用KVO遵守默认值而无需通知—…在非应用程序(命令行工具,代理或守护程序)中退出之前:调用CFPreferencesAppSynchronize (kCFPreferencesCurrentApplication)


—…由于任何其他原因:删除同步呼叫


查看完整回答
反对 回复 2019-10-21
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

Apple的文档synchronize()已更新,现在显示为:


等待对默认数据库的所有未决异步更新并返回;此方法是不必要的,不应使用。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 968 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信