10

ユーザーがアプリケーションにログインすると、JSON サーバーからトークンをダウンロードし、NSUserDefaults に保存します。

[[NSUserDefaults standardUserDefaults] setValue:token forKey:TOKEN];

ユーザーが後続のページでログアウトすると、このメソッドを呼び出してログイン画面に戻ります。

[[NSUserDefaults standardUserDefaults] setObject:@"" forKey:TOKEN];

(そしてその前に [[NSUserDefaults standardUserDefaults] removeObjectForKey:TOKEN] を呼び出しました;)

このユーザーのデフォルトをどのように削除しようとしても問題ありません。アプリをロードするたびに、空の文字列や null 値ではなく、常に完全なトークンが表示されます。

周りを読んでいると、明らかに読み書きサイクルと関係がありますか?しかし、しばらく放置しても鍵は残ります。これはシミュレーターの問題ですか?

原因が何であれ、どうすればこれを回避できますか?

4

2 に答える 2

22

最初にメモリをキャッシュするというシミュレータの問題です。これは xcode でのみ発生し、デバイスでは発生しないはずです。

于 2013-05-20T18:14:50.593 に答える
7

電話しますか

[[NSUserDefaults standardUserDefaults] synchronize];

キーが削除された後?変更をデータベースに永続化していない可能性があります。

于 2013-09-09T20:19:41.933 に答える