NSUserDefaults的同步方法何时以及为何失败?

luv*_*ere 5 iphone nsuserdefaults synchronize

NSUserDefaults的同步方法何时以及为何失败?确保我的值实际写入并提交给NSUserDefaults的最佳方法是什么,所以在应用程序重启后恢复状态会不会有任何问题?

Nik*_*uhe 5

synchronize方法是围绕该CFPreferencesSynchronize函数的更高级API包装器.文档中没有任何内容,但我认为synchronize只返回结果CFPreferencesSynchronize.由于此CoreFoundation功能可用于同步主机(管理员)和基于网络的首选项,因此在某些情况下可能会失败.

在最常见的情况下,应用程序只是同步其用户域首选项(在当前用户的库目录中),该功能通常不会失败.我认为忽略返回值是安全的synchronize.但那只是我的个人意见.


luv*_*ere 0

在某些情况下,我的应用程序尝试使用某个键写入 nil 值,这导致同步失败。现在我在保存之前检查该值是否为零,问题已解决。