管理NSUserDefaults

时间:2013-09-05 19:02:10

标签: cocos2d-iphone nsuserdefaults

我想知道将NSUserDefaults设置为需要使用的地方是正确的,而不是设置一个管理中心位置。例如,在我的游戏中,在GamePlayScene课程中,我为分数和等级设置了NSUserDeflaults,在设置课程中,我为声音效果设置了NSUserDefaults。这些只是我设置的NSUserDefaults中的一小部分。如果有一个中心位置(类),他们被管理是一个好主意,它应该在哪里(类),我应该如何管理它们。谢谢。

3 个答案:

答案 0 :(得分:1)

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

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

项目越复杂,第二种方法就越好,因为创建其他方法的开销减少了,有利于减少错误,通常是使用错误的键作为值(即使用级别密钥存储得分)。 / p>

答案 1 :(得分:0)

UserDefaults缓存在内存中,只有在同步时才会写入。您可以随意写信给他们。集中这可能会使事情变得比需要的更复杂。

重要的是在正确的时刻同步它们。当应用程序停用或终止时。

在我看来,UserDefaults已经是一个集中的地方。

答案 2 :(得分:0)

[[NSUserDefaults standardUserDefaults]setObject:@"stringValue" forKey:@"strkey"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSString *str=[[NSUserDefaults standardUserDefaults]objectForKey:@"strkey"];
NSlog(@"string is-%@",str);