0

iOS4 では NSUserDefaults を保存すると情報が保存されます。しかし、その後、アプリケーションが非アクティブになり、(ホーム ボタンをダブルクリックしてからアプリケーションを終了することにより) アプリケーションを強制終了し、アプリケーションを再度起動すると、NSUserDefaults が読み取られません。

さて、これは NSUserDefaults のデフォルトの動作で、アプリが何らかの問題で終了した場合、次回の起動時に情報が保存されないのでしょうか?

情報を永続化するために使用している呼び出しは次のとおりです。

[[NSUserDefaults standardUserDefaults] registerDefaults:
     [NSDictionary dictionaryWithObjectsAndKeys:
      "Some date", @"Validity",
      nil]];
4

2 に答える 2

1

デフォルトを登録した後、これを追加します

[[NSUserDefaults standardUserDefaults] synchronize];

同期するまで、アプリが動作している限り、standardUserDefaults は現在の/正しい値を提供します。

アプリが終了すると、standardUserDefaults を同期していないため、アプリは次の起動時に同期されていない値を読み取ります。

例: 編集中の Google ドキュメントのようなものと考えてください。

Google ドキュメントの自動保存機能は、nsuserdefaults synchornize と同等です。ドキュメントに加えた変更が自動保存される前にブラウザを閉じると、次にドキュメントをロードしたときに古いコンテンツが表示されます。

于 2012-07-25T21:03:36.340 に答える
1

ユーザーのデフォルトを保持するために言及した呼び出しは、registerDefaults実際には何もディスクに保持しません。ディスク上に何registerDefaultsも見つからない場合に、アプリケーションに使用するデフォルトを初期化します。これは、アプリケーションの起動ごとに、通常はinitializeアプリ デリゲートのメソッドで行う必要があります。

アプリケーションが実行されると、通常はユーザーのデフォルトが変更されます。これらの変更されたデフォルトをディスクに保存したいときはいつでも、次のように呼び出す必要があります。

[[NSUserDefaults standardUserDefaults] synchronize];

デフォルトが保存されると、以降のアプリケーションの起動時に自動的にロードされます。

于 2012-07-25T21:05:51.403 に答える