NSUserDefaultsの奇妙な動作が発生しています。データを保存してから同期し、NSUserDefaultsのNSlogを実行して、データが保存されていることを確認します。データはNSlogから正しく保存されたものとして表示されますが、アプリを完全に閉じたとき(ホームボタンをダブルクリックしてアプリを強制終了したとき)、再起動したときに値は変更されていません。さらに奇妙なことに、NSUserDefaultsを保存し、アプリを強制終了し、NSUserDefaultsをリロードしてコードを数回繰り返すと、正しく保存される場合とされない場合があります。
私はこの投稿の奇妙なNSUserDefaultsの動作を読みましたが、同期を呼び出しているので、それが私の問題ではないと思います。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:@"MyString" forKey:@"testString"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
どんな助けでも大歓迎です。
私を本当に混乱させるのは、standardUserDefaultsのNSLogがデータが保存されていることを示している場合、アプリが強制終了された後ではないのはなぜですか?
ありがとう
アップデート
問題は、NSUserDefaultsに保存していた可変配列と不変配列の取り違えにあったようです。データを取得するときにmutablecopyを使用しましたが、問題は解決したようです。