2012-12-25 9 views
5

NSUserDefaultsのドキュメントでは、synchroniseメソッドが定期的に呼び出されていますが、頻度は言及されていません。 10分のGoogle検索で何も明らかにされなかったNSUserDefaultsはどのくらいの頻度で同期されていますか?

synchroniseメソッドはどのくらい呼び出されますか?

+0

わかりません。それはあなたが頼りにすべきではない実装の詳細です。変更を永続化する必要がある場合は、手動で ' - synchronize'してください。 –

+0

しかし、どのくらい頻繁に呼び出されるのか不思議であれば、シンプルな 'NSLog()'にスウィズリングして自分自身で見つけ出す方法はありますか? –

+0

ありがとう、私はそれを考えなかった。 – duci9y

答えて

8

これは開示されていない実装の詳細です(おそらく一定の時間間隔でさえありません)。ただし、- [NSUserDefaults synchronize]に振り回されたメソッドを実行し、その実装が同期するたびにNSLog()を呼び出すように変更することで、自分自身で見つけることができます。

+0

私はプログラムを開始してから20分後に、値を変更しても 'synchronise'はまだ呼び出されていません。私はうんざりする権利をした。私は今諦めている。 – duci9y

+0

@ duci9yよろしいですか。レッスンで学んだことは:彼らが不正行為をしているので、アップルに頼らないでください:)受け入れてくれてありがとう。 –

+3

自動同期は、手動同期と同じコードパスを実行しません(具体的には、NSUserDefaultsが使用するCFPreferencesに実装されています)。 10.7とiOSでは、変更後は約15秒間隔ですが、一定ではありません。 10.8以上では、同期性能が向上しているため短縮されています。 –

関連する問題