1

我想知道,NSUserDefaults与拥有一个管理它们的中心位置相比,在需要使用它们的任何地方进行设置是正确的。例如,在我的游戏中,在GamePlaySceneNSUserDeflaults为分数和级别设置的类中,在我NSUserDefaults为音效设置的设置类中。这些只是NSUserDefaults我设置的几个。如果有一个管理它们的中心位置(类)是一个好主意,那么它应该位于哪里(类)以及我应该如何管理它们。谢谢。

4

3 回答 3

1

NSUserDefaults 是一个键控存档。一个好的设计可能会使用以下方法之一:

  • 在全局标头中声明 const NSString* 对象(键),并使用 const 字符串而不是就地 @".." 字符串直接从任何代码访问 NSUserDefaults(容易出现拼写错误)。
  • 围绕 NSUserDefaults 编写一个简单的包装器,使用类方法+(void)setScore:(int)score 来设置分数,而无需知道使用哪个键来存储分数。

您的项目越复杂,第二种方法就越好,因为减少了创建额外方法的开销以减少错误,通常是使用错误的键作为值(即使用级别键存储分数)。

于 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 回答