1

NSUserDefaults でキーのオブジェクトを繰り返し設定すると、パフォーマンスやその他の影響はありますか?

[self.myDefaults setObject:someObject forKey:someKey];

および/または

anObject = [self.myDefaults objectForKey:someKey];

私のループは 1 秒間に約 100 回繰り返され、一度に数秒間しか持続しません。

synchronizeループが終了した後にのみ呼び出します。

4

2 に答える 2

3

NSUserDefaults ドキュメントには、「NSUserDefaults は情報をキャッシュして、デフォルト値が必要になるたびにユーザーのデフォルト データベースを開く必要がないようにします。」

したがって、メモリ内ディクショナリ変数からオブジェクトを設定または取得するのと同じです。

ただし、タイプ ループ内で呼び出すと[self.myDefault synchronize];、ディスク上のデフォルト データベースを開いて書き込むため、パフォーマンスに影響を与える可能性があります。

于 2012-05-11T02:28:55.247 に答える
0

私の理解では、NSUserDefaults は大量のデータに最適なデータ ストアではありません。plists、またはより大きなデータ セットの場合は sqlite に書き込むことをお勧めします。ユーザーのデフォルトは、いくつかのユーザー設定のためのものであり、典型的なデータベースのように「データを保存する」ために構築されたものではありません。

ただし、反復ごとに同期している場合を除き、ループで実際にパフォーマンスの問題が発生することはありません。

于 2012-05-11T02:32:11.240 に答える