经常访问NSUserDefaults

sid*_*yll 12 performance cocoa objective-c nsuserdefaults

在我的应用程序的逻辑过程中,我需要经常访问用户首选项,并且需要10到15次来确定需要处理的内容以及如何处理.可能这个问题不是关于性能,而是关于正确地做到这一点.

目前我[[NSUserDefaults standardUserDefaults] valueForKey:...]每次需要申请价值时都会这样做.它是否正确?我认为将用户默认值"保存"为ivar可以减少额外的工作,但后来我想知道这是否会出现同步问题,例如用户是否更改了首选项并且只有在应用程序重新启动时才会更新(所以重新创建用户默认对象).

有没有更好的方法?

Ant*_*udt 26

不要担心它,它非常快,我不相信有更好的方法,这是该类的使用方式.

NSUserDefaults类在内部缓存值,因此查找速度非常快.[NSUserDefaults standardUserDefaults]实例变量的开销很小,如果你在代码中做了500万次,你甚至都不会注意到它.

优化这一点的唯一正确方法是改进逻辑,使用指针缓存您自己使用的值,而不是NSUserDefaults基本上使用的字典等.

  • @Clafou重新阅读我在这里发布的内容,我的评论实际上没有回答你的问题,但只是加强了'是的,让我感到烦恼!' 暗示我的回答,抱歉.无论如何,测试它给了我约150ms的访问共享实例500万次.Screenie:http://cl.ly/image/3J1J0H3D2h26 http://cl.ly/image/0F3R18413H2f (4认同)