1

NSUserDefaultsそれらを管理する中央の場所を持つのと比較して、使用する必要があるすべての場所に設定するのが正しいことを知りたいです。たとえば、私のゲームでは、スコアとレベル用に設定したクラスとGamePlayScene、効果音用に設定した設定クラスを使用しています。これらは私が設定したほんの一部です。それらが管理される中心的な場所 (クラス) を持つことが良い考えである場合、それはどこに配置されるべきか (クラス)、そしてそれらをどのように管理すべきか。ありがとう。 NSUserDeflaultsNSUserDefaultsNSUserDefaults

4

3 に答える 3

1

NSUserDefaults はキー付きアーカイブです。優れた設計では、次のアプローチのいずれかを使用する可能性があります。

  • グローバル ヘッダーで const NSString* オブジェクト (キー) を宣言し、インプレース @".." 文字列 (タイプミスしやすい) の代わりに const 文字列を使用して、任意のコードから直接 NSUserDefaults にアクセスします。
  • +(void)setScore:(int)score スコアを保存するためにどのキーが使用されているかを知る必要なく、スコアを設定するなどのクラス メソッドを使用して、NSUserDefaults の周りに単純なラッパーを記述します。

プロジェクトが複雑になればなるほど、2 番目のアプローチが適切になります。追加のメソッドを作成するオーバーヘッドが減り、エラーが少なくなるためです。これは通常、値に間違ったキーを使用する (つまり、レベル キーでスコアを保存する) ことによります。

于 2013-09-05T19:22:13.817 に答える
0
[[NSUserDefaults standardUserDefaults]setObject:@"stringValue" forKey:@"strkey"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSString *str=[[NSUserDefaults standardUserDefaults]objectForKey:@"strkey"];
NSlog(@"string is-%@",str);
于 2014-05-22T11:09:18.237 に答える
0

UserDefaults はメモリにキャッシュされ、同期するときにのみ書き込まれます。好きな場所に書き込むことができます。これを一元化すると、必要以上に複雑になる可能性があります。

重要なことは、それらを正しいタイミングで同期させることです。アプリが非アクティブ化または強制終了されたとき。

私の意見では、UserDefaults はすでにそれを行うための集中的な場所です。

于 2013-09-05T19:38:54.227 に答える