1

我有一个仅后台应用程序,该应用程序通过系统首选项中的首选项窗格进行控制。为了在首选窗格和应用程序之间进行通信,我使用分布式通知。用户默认值通过 共享[NSUserDefaults addSuiteNamed:]。这一切都很顺利。

当系统首选项窗格提示时,当用户为所有用户安装首选项窗格时,就会出现此问题。在这种情况下,首选项被写入~/Library/Preferences/,与“仅针对此用户”安装时相同。(我认为这是正确的行为。)但是,当 prefpane 读取默认键时,prefpane 似乎正在查看/Library/Preferences/,而不是在用户的主目录中。

把它们加起来:

  • 首选项窗格安装在:~/Library/PreferencePanes/
    • 默认写入:~/Library/Preferences/
    • 默认读取自:~/Library/Preferences/
  • 首选项窗格安装在:/Library/PreferencePanes/
    • 默认写入:~/Library/Preferences/
    • 默认读取自:/Library/Preferences/

任何人都可以阐明哪里出了问题?

谢谢, 科尔贾

4

1 回答 1

3

您的设计与 Growl 基本相同。我们使用 CFPreferences 来读取和写入用户的偏好。请参阅GrowlPreferencesController和GrowlDefinesInternal.h中的宏。分布式通知提示后台应用程序和 prefpane 重新读取首选项。

(不过,不要把它看得太远——在 Core Foundation 中使用 NSNumber、NSDictionary 等很好,而且它更容易阅读。)

于 2009-07-22T23:21:26.400 回答