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 に答える