10.9でCocoaアプリケーションを開発しているときに、~/Library/Preferences
そして、アプリのplistファイルを削除し(リセットするため)、次のビルドおよび実行時に、アプリはplistファイルがまったく削除されなかったかのように動作します。
これがなぜ起こるのかを追跡するのに長い時間がかかり、SOに関する質問/回答が表示されなかったので、他の人を助けるためにこの質問を書いて自分で答えています。
10.9では、システムはより堅牢な設定の「キャッシュ」を行っています。 plistファイルを削除した後、アクティビティモニターを起動し、「cfprefsd」プロセスを強制終了しました。注意:この名前のプロセスは複数実行されており、自分のユーザーで実行されているプロセスのみを終了したい。ルートとして実行しているものを殺さないでください。
これを行うと、設定キャッシュがフラッシュされ、アプリを次回実行したときに、最初からゼロからの起動が開始されます。
編集:以下で報告するように、コマンドラインでdefaults delete [your bundle identifier]
を使用すると、キャッシュの問題が解消されるようです。私はこれで成功を収めました。
ユーザープロセスcfprefsdを強制終了するとキャッシュがフラッシュされるため、変更は保持されることがわかりました。
killall -u $USER cfprefsd
ターミナル内:
defaults delete com.somecompany.someapp
ところで、defaultsコマンドを使用するよりも便利なGUIアプリをリリースしました。
http://www.tempel.org/PrefsEditor
Xcodeのplistエディターとほぼ同じように機能しますが、ユーザーのアプリの設定に直接影響します。
すべての環境設定を削除するには、環境設定エディタで環境設定を開き、[すべて選択]を選択し、BackspaceキーまたはDeleteキーで削除すると、すぐにすべてが消えます。
ただし、この特定のタスクでは、特に「.command」で終わるテキストファイルにコマンドを入れて(defaults delete
で)実行可能にする場合は、chmod +x
を使用する方が速い場合があります。次に、Finderからダブルクリックして実行します。