我应该保存NSLocalizedString()返回的字符串吗?

Don*_*hey 5 iphone cocoa cocoa-touch

我正在开发一款iPhone应用程序,我们在初始版本中使用英语和日语进行本地化.我们经常调用NSLocalizedString()加载适当的本地化字符串进行显示.通常情况下,将本地化字符串保存在实例变量中是为了下次我们需要它们,或者我是否在这里进行微优化,我是否应该在每次需要时重新加载字符串?

Pet*_*sey 7

微型优化.首先使它工作,然后使其正确,然后快速.当你进入第3步,运行Shark(或乐器),然后按照它的指导.


And*_*ant 7

这是"依赖"答案中的一个.

调用NSLocalizedString涉及在bundle中执行查找.这些查找非常快,但不是免费的.是否缓存此返回值或只是调用NSLocalizedString的便利取决于它的使用方式.

  1. 如果您将返回传递给类似UILabel或UITableViewCell的文本字段,则只有在首次设置属性时才会进行查找.

  2. 如果您在drawRect调用中使用它,那么只有当您的视图需要重新绘制时才会进行查找,而这种查看可能经常,不经常或从不.

  3. 如果你在游戏界面中使用它,每一帧都重新绘制屏幕,​​那么对于一些UI元素,这些查找可能每秒发生数百次.

我会说,对于像#3这样的东西,你应该从缓存结果开始.

对于其他人,请以最方便的方式编写它们,如果您的UI中存在性能问题,请使用Instruments缩小原因.如果是NSLocalizedString则相应地优化它.