web-dev-qa-db-ja.com

NSUserDefaults同期のベストプラクティス

Plistに何かを書き込むたびに[[NSUserDefaults standardUserDefaults] synchronize]を使用しています。それはやり過ぎですか?それとも、これを行うことで悪影響がありますか?

37

はい、それはやり過ぎかもしれませんが、単純なアプリケーションでは、パフォーマンスの低下に気付くでしょうか?ユーザーが設定を選択するなどの基本的なユーザー操作の後でのみ保存する場合は、おそらくそうではありません。同期をより頻繁に呼び出すことの利点は、アプリケーションがクラッシュする可能性があり、保存する情報が重要である場合です。そうでない場合、iOSは定期的にそれを保存します。

53
Joe

定期的な間隔で自動的に呼び出される同期メソッドは、メモリ内キャッシュをユーザーのデフォルトデータベースと同期させます。

頻繁に呼び出すとパフォーマンスの問題が発生する可能性がありますが、(すでに述べたように)小さなアプリケーションの場合はやり過ぎではありませんOR plistを最新の状態にする必要がある場合は、現在のスレッドまたはアプリケーションの他のスレッドで行われた変更。

このメソッドは定期的に自動的に呼び出されるため、自動同期を待つことができない場合(たとえば、アプリケーションが終了しようとしている場合)、またはユーザーのデフォルトをディスク上にあるものに更新する場合にのみ、このメソッドを使用してください。変更を加えていません

おそらく、気付くかもしれない唯一の悪影響は、パフォーマンスのごくわずかな低下です。

7