我已经搜索了一段时间,如果我正在做的话,是否需要进行同步:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kType];
之后,我应该这样做吗?:
[[NSUserDefaults standardUserDefaults] synchronize];
在这件事上等你回答。
答案 0 :(得分:5)
在stackoverflow中引用this post,来自DarkDust的答案:
[default synchronize];
的目的是使用户默认 立刻写在磁盘上 。你不需要打电话 显然,iOS已经在适当的时候做到了。所以你可以 删除该行。事实上,如果你打电话,这是一个性能问题 每次设置默认值时都会synchronize
。在iOS 7之前,用户默认使用时总是同步的地方 应用程序转换为后台。从iOS 7开始就没有了 更长的时间,所以你可能想在你的应用程序中调用
synchronize
代表的applicationDidEnterBackground:
或注册到UIApplicationDidEnterBackgroundNotification
通知你。来自the documentation for
-[NSUserDefaults synchronize]
:因为此方法是定期自动调用的,所以只有在您不能等待自动时才使用此方法 同步(例如,如果您的应用程序即将退出)或 如果要将用户默认值更新为磁盘上的内容,即使如此 你没有做任何改变。