gpt4 book ai didi

iOS NSUserDefaults 同步完成前的访问

转载 作者:行者123 更新时间:2023-12-01 17:32:12 24 4
gpt4 key购买 nike

如果我设置 NSUserDefault对象并尝试在 之前访问它同步 ,我可以访问我刚刚添加的对象吗?

我已经尝试编写代码来测试它,但我不确定 同步 在我不知情的情况下发生。

最佳答案

是的,您的应用程序可以在 synchronize 之前访问保存的首选项。发生,如果它在应用程序的同一运行 session 期间发生读取周期之前保存。为了在后续应用程序启动期间访问信息,必须进行同步。

来自 Apple 文档:NSUserDefaults

NSUserDefaults caches the information to avoid having to open the user’s defaults database each time you need a default value. The synchronize method, which is automatically invoked at periodic intervals, keeps the in-memory cache in sync with a user’s defaults database.



synchronize方法将对内存缓存的任何修改写入磁盘( Library/Preferences 中的 plist 文件),并将未修改的内存缓存更新为磁盘上的最新版本。此方法会定期调用,而不会通知应用程序。

再次来自文档: [NSUserDefaults synchronize]

Discussion
Because this method is automatically invoked at periodic intervals, use this method only if you cannot wait for the automatic synchronization (for example, if your application is about to exit) or if you want to update the user defaults to what is on disk even though you have not made any changes.



根据我的经验,请调用 synchronize当应用程序要退出时显式方法,这确保了最新的首选项在下次启动时可用。但是,我也遇到过在 synchronize 之前应用程序崩溃的情况。发生所以不存储首选项。您的应用程序必须能够处理这些场景。

附加
使用 NSUserDefaults 存储最小数据,不要存储大量数据。原因是,应用程序默认值是在应用程序启动期间加载的,如果要加载的数据很大,则应用程序加载时间会增加,并且应用程序很可能被 Springboard 杀死。 .

关于iOS NSUserDefaults 同步完成前的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17183183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com