Ios NSUserDefaults同步

Ios NSUserDefaults同步,ios,Ios,我使用UserDefaults在导航控制器的背面按上存储一个小数组。我返回的视图将需要使用该数组 我已经了解到,出于性能原因,您不应该手动调用synchronize方法,并且NSUserDefaults将定期写入数据。但是,我是否可以确定阵列将始终更新,以便在按下后退按钮时使用视图 数组也需要永久存储,这就是为什么我使用NSUserDefaults您可以调用synchronize(),但需要注意它有以下缺陷 由于此方法会定期自动调用,因此只有在无法等待自动调用时才使用此方法 同步(例如,如果应用

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

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


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

您可以调用
synchronize()
,但需要注意它有以下缺陷

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

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

我可以建议的另一种方法是声明一个全局数组,可能在
App Delegate
中,并设置和获取该数组的值

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


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

您的数组包含什么?用户默认值不是在视图控制器之间传递数据的正确方式。也许您应该看到@rmaddy这需要永久存储在应用程序中,它也是一个Setting@UmarFarooque它只是一个小的整数数组