8

Mountain Lion 用に開発された Mac OS X アプリに取り組んでいます。アプリは、初回実行時にいくつかのセットアップ タスクを実行します。次に、フラグを設定し[NSUserDefaults standardUserDefaults]ます。その後の実行では、アプリはそのフラグが設定されているかどうかを確認し、設定されている場合はこれらの初回セットアップ タスクを実行しません。

Mountain Lion では、~/Library/Preferences/bundleid.plist ファイルを削除して、アプリによって NSUserDefaults に保存されているすべてのものを一掃することができました。ただし、Mac OS X の最近のバージョンでは、アプリを実行してもそのファイルは作成されません。[[NSUserDefaults standardUserDefaults] objectForKey:@"foo"]デバッガーから返される値を調べて、データが NSUserDefaults に正常に保存されていることを確認しました。

NSUserDefaults に保存されているアプリの設定を削除する方法に関して、誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

18

Mavericks はまだリリースされていないので、質問のその部分は無視します。Mavericks 固有の回答が必要な場合は、開発者フォーラムで質問する必要があります。

OS X のバージョンに関係なく、デフォルト ドメインを削除する正しい方法は、defaults delete bundleidまたはプログラムで同等の を使用することです。 ~/Library/Preferences実装の詳細です。そこに含まれる plist は、常に最新の情報を含んでいるとは限りません。Mountain Lion より前は、デフォルトの変更は個々のアプリケーションでバッファリングされますsynchronize。Mountain Lion 以降では、それらはcfprefsdプロセス内のメモリに保持され、遅延してディスクにフラッシュされます。

詳細については、10.8 の Core Foundation リリース ノートを参照してください。

2016 更新: NSUserDefaults の状態に関する現在のガイドはこちらです。

于 2013-10-07T21:11:51.527 に答える