我想观察[NSUserDefaults standardDefaults]中设置值的更改.我正在使用InAppSettingsKit来访问和更改程序中的设置.到目前为止,我刚刚假设所有值都已更改,并向所有观察者发送通知以根据新值进行更新.这效率不高,我只想在发生相关更改时向观察者发送通知.
有人可以建议一个有效的方法吗?
我可以假设来自[NSUserDefaults standardDefaults]的任何键的值永远不是数组,集合或字典吗? (使用设置对我来说是新的.如果我必须对变更进行强力扫描,将前字典与后字典进行比较,这可能会有所帮助.并且它不需要任何递归.)
如果这已经在InAppSettingsKit中,我还没有看到它,如果有人能指出它我会很高兴.
解决方法
没有系统通知可以保存更改默认值的详细信息.因为我没有使用它,所以我不能代表inappsettings套件.
响应更改的单个对象应保留其相关默认设置的本地值,并且仅在必要时执行昂贵的操作.因此,响应通知应该是一个简单的操作.如果您有两个单独的对象响应单个dafaults键中的不同子对象,那么您可能需要重新考虑默认值的组织方式.如果您有一些具体的例子,请将它们包含在您的问题中.
在重写整个应用程序之前,以“效率”的名义使用某种默认管理器对象进行测试,以确保您实际上浪费了大量的用户体验,影响了大量对象响应通知的时间,否则您正在过早优化,你知道他们对此的看法.
在回答问题的第二部分时,你无法做出这样的假设.任何属性列表对象都可以存储在用户默认值中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。