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

时间:2016-06-07 13:06:29

标签: ios nsuserdefaults

我已经搜索了一段时间,如果我正在做的话,是否需要进行同步:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:kType];

之后,我应该这样做吗?:

[[NSUserDefaults standardUserDefaults] synchronize];

在这件事上等你回答。

1 个答案:

答案 0 :(得分:5)

在stackoverflow中引用this post,来自DarkDust的答案:

  

[default synchronize];的目的是使用户默认   立刻写在磁盘上 。你不需要打电话   显然,iOS已经在适当的时候做到了。所以你可以   删除该行。事实上,如果你打电话,这是一个性能问题   每次设置默认值时都会synchronize

     

在iOS 7之前,用户默认使用时总是同步的地方   应用程序转换为后台。从iOS 7开始就没有了   更长的时间,所以你可能想在你的应用程序中调用synchronize   代表的applicationDidEnterBackground:或注册到   UIApplicationDidEnterBackgroundNotification通知你。

     

来自the documentation for -[NSUserDefaults synchronize]:

     
    

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