web-dev-qa-db-ja.com

plistファイルを削除しても、macOS 10.9以降のアプリはリセットされません

10.9でCocoaアプリケーションを開発しているときに、~/Library/Preferencesそして、アプリのplistファイルを削除し(リセットするため)、次のビルドおよび実行時に、アプリはplistファイルがまったく削除されなかったかのように動作します。

これがなぜ起こるのかを追跡するのに長い時間がかかり、SOに関する質問/回答が表示されなかったので、他の人を助けるためにこの質問を書いて自分で答えています。

42
Bryan

10.9では、システムはより堅牢な設定の「キャッシュ」を行っています。 plistファイルを削除した後、アクティビティモニターを起動し、「cfprefsd」プロセスを強制終了しました。注意:この名前のプロセスは複数実行されており、自分のユーザーで実行されているプロセスのみを終了したい。ルートとして実行しているものを殺さないでください。

これを行うと、設定キャッシュがフラッシュされ、アプリを次回実行したときに、最初からゼロからの起動が開始されます。

編集:以下で報告するように、コマンドラインでdefaults delete [your bundle identifier]を使用すると、キャッシュの問題が解消されるようです。私はこれで成功を収めました。

59
Bryan

ユーザープロセスcfprefsdを強制終了するとキャッシュがフラッシュされるため、変更は保持されることがわかりました。

killall -u $USER cfprefsd

14
Pencilcheck

ターミナル内:

defaults delete com.somecompany.someapp

12
Tom Andersen

ところで、defaultsコマンドを使用するよりも便利なGUIアプリをリリースしました。

http://www.tempel.org/PrefsEditor

Xcodeのplistエディターとほぼ同じように機能しますが、ユーザーのアプリの設定に直接影響します。

すべての環境設定を削除するには、環境設定エディタで環境設定を開き、[すべて選択]を選択し、BackspaceキーまたはDeleteキーで削除すると、すぐにすべてが消えます。

ただし、この特定のタスクでは、特に「.command」で終わるテキストファイルにコマンドを入れて(defaults deleteで)実行可能にする場合は、chmod +xを使用する方が速い場合があります。次に、Finderからダブルクリックして実行します。

10