如果我没有进行更改,为啥我需要同步 NSUserDefaults?
Posted
技术标签:
【中文标题】如果我没有进行更改,为啥我需要同步 NSUserDefaults?【英文标题】:Why would I need to synchronize NSUserDefaults if I haven't made changes?如果我没有进行更改,为什么我需要同步 NSUserDefaults? 【发布时间】:2014-01-01 06:08:26 【问题描述】:-[NSUserDefaults synchronize:]
的文档内容如下:
因为此方法会定期自动调用, 仅当您不能等待自动 同步(例如,如果您的应用程序即将退出)或 如果您想更新用户默认为磁盘上的内容,即使 您没有进行任何更改。
我想知道粗体部分什么时候会出现?我的意思是如果没有对用户默认值进行更改,那么它会反映磁盘上的值吗?为什么我必须调用同步来更新活动对象?我错过了什么明显的东西吗?
【问题讨论】:
更多详情请查看:***.com/questions/17183183/… 【参考方案1】:在 ios 上,如果用户在“设置”应用中更新了某些内容,就会发生这种情况。
在 OSX 上,如果您的偏好设置与其他应用程序共享,或者系统范围的设置(例如,当前语言)发生更改,通常会发生这种情况。但是,从那时起 NSUserDefaults 已更新为自动处理此问题,并在外部发生更改时重新读取数据。
请注意,对于后一种情况,文档已过期。我已经提交了关于文档的错误报告。
【讨论】:
【参考方案2】:想象一下,当您通过[NSUserDefaults standardUserDefaults]
使用共享默认对象时,磁盘上的 plist 文件会由于任何原因而更改。除非您调用 synchronize
来更新您的共享对象,否则您的默认对象将无法识别此更改。
【讨论】:
【参考方案3】:用户默认设置可以(可以)在应用之间共享。有一个全局域。
【讨论】:
以上是关于如果我没有进行更改,为啥我需要同步 NSUserDefaults?的主要内容,如果未能解决你的问题,请参考以下文章