观察NSUserDefaults中各个设置的更改

时间:2011-11-06 04:06:16

标签: ios nsuserdefaults application-settings

我想观察[NSUserDefaults standardDefaults]中设置值的更改。我正在使用InAppSettingsKit来访问和更改程序中的设置。到目前为止,我刚刚假设所有值都已更改,并向所有观察者发送通知以根据新值进行更新。这效率不高,我只想在发生相关更改时向观察者发送通知。

有人可以建议一种有效的方法吗?

我可以假设来自[NSUserDefaults standardDefaults]的任何键的值永远不是数组,集合或字典吗? (使用设置对我来说是新的。如果我必须对变更进行暴力扫描,将前字典与后字典进行比较,这可能会有所帮助。并且它不需要任何递归。)

如果已经在InAppSettingsKit中,我还没有看到它,如果有人能指出它,我会很高兴。

2 个答案:

答案 0 :(得分:1)

没有系统通知包含更改了哪个默认值的详细信息。因为我没有使用它,所以我不能代表inappsettings套件。

响应更改的各个对象应保留其相关默认设置的本地值,并且仅在必要时执行昂贵的操作。因此,响应通知应该是一个简单的操作。如果您有两个单独的对象响应单个dafaults键中的不同子对象,那么您可能需要重新考虑默认值的组织方式。如果您有一些具体的例子,请将它们包含在您的问题中。

在重写整个应用程序之前,以“效率”的名义使用某种默认管理器对象进行测试以确保您实际上浪费了重要的用户体验,从而影响了大量对象响应通知的时间,否则你过早地进行优化,你知道他们对此有何看法。

在回答问题的第二部分时,你无法做出这样的假设。任何属性列表对象都可以存储在用户默认值中。

答案 1 :(得分:0)

iOS中尚未提供绑定。