2012-05-11 3 views
1

NSUserDefaultsのキーのオブジェクトを繰り返し設定すると、パフォーマンスやその他の影響がありますか?タイトなループでNSUserDefaultsを読み書きするのは悪いですか?

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

および/または

anObject = [self.myDefaults objectForKey:someKey]; 

私のループは、第二の内、約100回繰り返し、一度に数秒間続きます。

私はループが終了した後でsynchronizeと呼ぶだけです。

+0

あなたは何をしているのですか? –

+0

「ループ」は、私が読み書きしている頻度を表す単なる例です。私が実際にやっていることは、パンのジェスチャーのタッチイベントに反応することです。私は、余分な変数を使用し、特定の場所でデフォルトに設定する余分なコードを保存するために、NSUserDefaultsに直接読み書きすることを検討しています。 – MattyG

+0

あなたはNSUserDefaultsに保存していますが、それはまたUIPanGestureRecognizerに応答する必要がありますか? –

答えて

3

NSUserDefaults docs状態: "NSUserDefaultsは、デフォルト値が必要なたびにユーザーのデフォルトデータベースを開く必要がないように情報をキャッシュします。"

したがって、メモリ内の辞書変数からオブジェクトを設定または取得することも同じです。

ただし、型ループ内で[self.myDefault synchronize];を呼び出すと、パフォーマンスが低下します。これが開き、ディスク上のデフォルトデータベースに書き込まれるためです。

0

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

各繰り返しで同期している場合を除いて、実際にはループ内でパフォーマンスの問題に遭遇することはありません。

関連する問題