NSUserDefaults を使用しているときに、Xcode 5 で osx アプリケーションをプログラミングする際に問題が発生しました。通常、[[NSUserDefaults standardUserDefaults] setObject:@"This is an object" forKey:@"Test"]
ユーザーの好みを記憶するために使用します。その後、アプリケーションは ~/Library/Preferences/application.bundle.identifier.plist に plist ファイルを生成します。
問題は、plist ファイルを削除した後でも、保存した設定をアプリケーションが取得できることです。プロジェクトをクリーンアップし、xcode を再起動し、派生フォルダー内のファイルを削除しようとしても、その plist をクリアする方法はありません。この問題を解決する唯一の方法はシステムを再起動することなので、メモリに何かが保存されていると思います。問題は、これらの保存された設定をどのように消去できるかです。(デバッグやテストで手動でコードを追加して設定をクリアするのは不便だと思います。) そして、以前のバージョンの Xcode 4.x を試してみましたが、そのような問題はありません。興味のある方は、新しいココア プロジェクトを作成して、次のようなコードを追加するだけで済みます。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"This is an object." forKey:@"Test"];
NSLog(@"%@", [defaults objectForKey:@"Test"]);
「applicationDidFinishLaunching」の下。次に、行って削除し~/Library/Preferences/application.bundle.identifier.plist
ます。その後、 [defaults setObject:@"This is an object." forKey:@"Test"];
コード内の次の行にコメントを付けて、アプリケーションを再度実行します。コンソールには引き続き"This is an object."
My environment is Mavericks GM and Xcode 5.0(5a1413) と表示されます。
これが私だけに起こったことではないことを願っています。