从密钥中删除对象后,是否需要在NSUserDefaults中进行同步?

Zet*_*aPR 5 nsuserdefaults ios

我一直在寻找,如果我这样做,我是否需要做同步:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:kType];
Run Code Online (Sandbox Code Playgroud)

那之后,我该怎么办?:

[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

在这件事上等你的答案.

Zet*_*aPR 5

在stackoverflow中引用这篇文章,来自DarkDust的答案:

目的[default synchronize];是使用户默认值立即写入磁盘.你不需要明确地调用它,iOS已经在适当的时候完成它.所以你可以删除该行.实际上,如果synchronize每次设置默认值时调用都会出现性能问题 .

在iOS 7之前,用户默认在应用程序转换为后台时始终同步的位置.从iOS 7开始不再是这种情况,因此您可能需要synchronize在应用程序委托中调用applicationDidEnterBackground:或注册 UIApplicationDidEnterBackgroundNotification通知以执行此操作.

以下文档-[NSUserDefaults synchronize]:

因为此方法是定期自动调用的,所以只有在您无法等待自动同步时(例如,如果您的应用程序即将退出)或者您希望将用户默认值更新为磁盘上的内容,请使用此方法你没有做任何改变.