最佳实践 - 全局访问首选项

Run*_*oop 3 iphone cocoa cocoa-touch

我的应用的用户首选项存储在NSUserDefaults中.这包括"主题"首选项,需要经常由多个类访问.我不想反复调用"[[NSUserDefaults standardUserDefaults] objectForKey:...",因为它会产生不一致的代码,我认为会产生开销.在任何课程中访问偏好的首选和最简洁的方法是什么?

小智 5

访问用户首选项的首选方法是您执行此操作的方式,这很难实现.在实际注意到它之前,你不应该假设开销.

也就是说,考虑在启动时从用户首选项中读取主题值,然后将相应的主题设置存储在主题对象中.然后,当您调用它们的方法时,您可以将此主题对象传递给各个类,并且它们可以使用它.作为奖励,无论用户设置如何,您最终都能够传递任意主题对象,允许您在主题选择界面中使用其输出进行主题预览,假设这些类涉及用户可见的输出.只是需要考虑的事情.

  • 您已经使用+ standardUserDefaults访问共享首选项对象.至于主题对象,我不是在谈论将它设置为每个类中的属性.相反,每个类的输出方法可以将主题对象作为参数,例如 - (NSAttributedString*)outputUsingTheme:(MyTheme*)aTheme.中央控制器可以将主题存储为属性并将其传递给每个类的输出方法,将每个结果附加到最终输出以呈现给用户. (2认同)