我想观察[NSUserDefaults standardDefaults]中设置值的变化。我正在使用InAppSettingsKit来访问和更改程序中的设置。到目前为止,我只是假设所有值都发生了变化,并向所有观察者发送通知,让他们根据新值进行更新。这是不高效的,我只想在发生相关更改时向观察者发送通知。
谁能提出一个有效的方法来做这件事?我可以假设[NSUserDefaults standardDefaults]中的任何键的值都不是数组、集合或字典吗?(处理设置对我来说是全新的。如果我必须对更改进行强力扫描,比较前字典和后字典,这可能会有所帮助。并且它不需要任何递归。)
如果这已经在InAppSettingsKit中,我还没有看到它,如果有人能指出来我会很高兴。
没有保存默认值更改的详细信息的系统通知。我不能说inappsettings kit,因为我没有用过它。
响应更改的单个对象应该为其相关的默认设置保留本地值,并且只在必要时执行昂贵的操作。因此,响应通知应该是一个简单的操作。如果你有两个单独的对象在一个默认键中响应不同的子对象,那么你可能需要重新考虑你的默认值是如何组织的。如果你有一些具体的例子,请把它们包括在你的问题中。
在以"效率"的名义重写你的整个应用程序之前,做一个测试,以确保你真的浪费了大量的时间,影响用户体验,让许多对象响应通知,否则你就过早地优化了,你知道他们会说什么。
在回答你问题的第二部分时,你不能做那个假设。任何属性列表对象都可以存储在用户默认值中。
iOS还不支持绑定