我正在使用UserDefaults在导航控制器的背面按上存储一个小的数组。我要返回的视图将需要使用该数组。

我已经读到,出于性能原因,您不应该手动调用synchronize方法,并且NSUserDefaults将定期写入数据。但是,我可以确定该数组将始终被更新以供在按下后退按钮时使用的视图吗?

数组也需要永久存储,这就是为什么我使用NSUserDefaults的原因

最佳答案

您可以调用synchronize(),但需要注意以下问题。

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


Link

在您的方案中,您应该调用它,因为您正在进行更改,并且系统可能无法及时触发synchronize()方法,并且当您按返回时返回视图控制器时,检查可能无效。

我可以建议的另一种方法是声明一个全局数组,也许用App Delegate声明并为其设置和获取值。

现在,当应用程序即将终止时,只需在applicationWillTerminate中将此全局数组保存为用户默认值,调用synchronize(),类似地,在应用程序即将启动时,从用户默认值中获取值并将值设置为全局数组即可。

这样,您只需调用一次synchronize(),您还将获得数据的最新副本。

关于ios - NSUserDefaults同步,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45646449/

10-12 05:23