私のiPhoneアプリケーションでは、またはのいずれremoveObjectForKey:@"bla"かsetObject:nil forKey:@"bla"を使用してキーを削除しています[NSUserDefaults standardUserDefaults]。
ただし、新しいView ControllerをNavigation Controllerスタックにプッシュする直前にこれを行うと、デフォルトが更新されません。
viewDidAppear次に表示されるプッシュされたコントローラーでそれを行うと、synchronize呼び出しは期待どおりに機能します。
この振る舞いがわかりません。誰かが同様の問題を抱えたことはありますか?
要約:新しい VC をプッシュする直前に削除 + 同期: NSUserDefaults は同じままです。削除+同期するviewDidAppearと機能します。
も使用してみsetPersistentDomain:forName:ましたが、結果は同じでした..
編集:コードは次のとおりです。
+ (void)deleteDefaultEntries
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults removeObjectForKey:@"key1"];
[defaults removeObjectForKey:@"key2"];
[defaults removeObjectForKey:@"key3"];
[defaults removeObjectForKey:@"key4"];
[defaults synchronize];
}