首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理NSUserDefaults

管理NSUserDefaults
EN

Stack Overflow用户
提问于 2013-09-06 03:02:10
回答 3查看 170关注 0票数 1

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

EN

回答 3

Stack Overflow用户

发布于 2013-09-06 03:22:14

NSUserDefaults是一个键控归档文件。一个好的设计可能会使用这些方法之一:

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

你的项目越复杂,第二种方法就变得越好,因为创建额外方法的开销减少了,有利于减少错误,通常是通过使用错误的键作为值(即使用level键存储分数)。

票数 1
EN

Stack Overflow用户

发布于 2013-09-06 03:38:54

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2014-05-22 19:09:18

代码语言:javascript
复制
[[NSUserDefaults standardUserDefaults]setObject:@"stringValue" forKey:@"strkey"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSString *str=[[NSUserDefaults standardUserDefaults]objectForKey:@"strkey"];
NSlog(@"string is-%@",str);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18643983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档