私はゲームを持っており、私は常にユーザーの進捗状況を保存しています。非常に速い進歩的なゲームであり、ゲームのいくつかのポイントでは、ユーザーの進行が6倍になる可能性があります。NSUserDefaultsにいくつかのプログレッション変数を保存し、毎秒6回同期させる必要があります。これは私のiPhone6s 64GBで正常に動作していますが、私はそれがiPhone4 16GBが処理できるものではないかもしれないことを恐れています。NSUserDefaultsパフォーマンスの懸念
私はそれをテストする方法はありませんが、シミュレータはこのようなものでは本当に正確ではなく、私は遅いデバイスがありません。また、NSUserDefaultsのpreformanceレポートに関する多くの詳細をドキュメントで見つけることができないようです。誰かがその話題に関する知識を持っていますか?
は、私は私の.hに定義し、単に保存しappWillResignActive中に一度NSUserDefaultsを同期するよ地元NSDictionaryの中に保存する変数を検討しているが、私はクラッシュ時におけるデータの損失を心配し、デバイスのバッテリーが死んで、私はNSTimerを持って5秒ごとにデータを保存することができ、クラッシュ時の損失を最小限に抑えるためにappWillResignActiveを保存することもできると思います。 NSUserDefaultsが小さなデバイスでうまく処理できるかもしれないものの、大量のコードを書き直す必要はありません。
"synchronize"を呼び出すことは、データをディスクに書き込むこととは関係がないことに注意してください。純粋に同じデフォルトストアを読み書きする別のアプリと同期することです(これは非常にまれで、Apple以外のアプリではほとんど使えません)。 'synchronize'はすぐに(最終的に)人々が思うようなことをしないので廃止されます。メンテナからNSUserDefaultsを正しく使用していることの書き方を参照してください:http://dscoder.com/defaults.html –
ありがとう@RobNapier私はそれを知らなかったのです! –
私は答えに同意していますが、あまりにも多くのatmを「同期」と呼んでいますが、あなたの「懸念」はおそらく根拠がないと指摘したいと思います。 [このリンク](https://mixpanel.com/trends/#report/iphone_models/from_date:-20,to_date:0)によると、市場シェアは約1%に過ぎません。私は大量の時間を1%の最適化に費やすことを勧めません。 –