微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

安全地读取-比较-写入UserDefaults值

如何解决安全地读取-比较-写入UserDefaults值

我正在编写一个实用程序,该实用程序可以为我配置一些UserDefaults值,例如根据个人喜好初始化新Mac。

它从输入文件中读取一组配置。然后,它使用CFPreferencesSetValue API将指定的首选项应用于各种应用程序。我用它代替NSUserDefaults,因为后者不允许您写到NSGlobalDomain/Library/Preferences/.GlobalPreferences.plist)。

它运作良好,但是这里有一个变化:我希望能够检测出哪些应用程序的首选项值实际发生了更改,以及哪些应用程序已经具有所需的首选项。这使我仅在必要时才自动重新启动“脏”应用程序,例如Finder,Dock等。

我通过这样做来实现:

  1. 读取现有首选项的值
  2. 将刚读取的值与从配置文件读取的所需值进行比较
  3. 注意到哪些域的值需要更改
  4. 应用首选项更改
  5. 重新启动与脏域相对应的应用程序。

问题是我有最后写赢的情况。没有任何事务/锁定机制,某人完全有可能改变我的偏好,而我会覆盖他们的改变。如果我仅更改自己的应用程序的首选项,就不会有问题,但是鉴于我将更改NSGlobalDomain(“流量”相对较高),这是等待中的错误。 / p>

是否有一种方法可以安全地进行此更改,而不会冒最后写赢者破坏其他更改的风险?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。