2009-03-01 8 views
5

私は最初のリリースで英語と日本語でローカライズしているiPhoneアプリを開発中です。 NSLocalizedString()には、適切なローカライズされた文字列を表示して表示することがよくあります。私たちが必要とする次回のために、ローカライズされた文字列をインスタンス変数に保存する方が一般的には良いのですか?ここではマイクロ最適化していますか?NSLocalizedString()によって返された文字列を保存する必要がありますか?

答えて

7

これは「それに依存する」回答の1つです。

NSLocalizedStringを呼び出すには、バンドル内でルックアップを実行する必要があります。これらのルックアップはかなり高速ですが、無料ではありません。この戻り値をキャッシュするか、単にNSLocalizedStringを呼び出す利便性があるかは、その使用方法によって異なります。あなたが UILabelまたはUITableViewCellのようなものの テキストフィールドへの復帰を渡している場合は、 最初のプロパティを設定するときに 検索がのみ発生します

  1. 。あなたがのdrawRect コールでそれを使用している場合は、あなたのビューは、多くの場合、 頻度の低い、または決してすることができた を再描画する必要がある場合に

  2. 、その後のルックアップにのみ発生 ます。

  3. あなたはこれらの 検索は数百倍の 秒ごとに起きている可能性が 画面は、いくつかのUI要素のために、その後すべてのフレーム を再描画されたゲームUIでそれを使用している場合。

#3のようなものでは、結果をキャッシュすることから始めるといいでしょう。

その他の場合は、最も便利な方法で記述し、UIにパフォーマンスの問題がある場合は、Instrumentsを使用して原因を絞り込みます。 NSLocalizedStringの場合はそれに応じて最適化します。

1

私はあなたがパフォーマンスヒットをあまり受けないと思っています。 NSLocalizedString(キー、コメント)ベンチマークがなけれ

[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] 

に変換するマクロですが、私はこれがどのように高価な見当がつかないが、私はそれがあまりにも悪くはないと思います。私の気持ちは、これがあなたのパフォーマンスのボトルネックにはならないということですが、デバイスでアプリケーションを実行するときにはいつでもSharkやInstrumentsを実行して自分自身で確認できます。

7

マイクロ最適化。まずそれを動作させてから、それを正しいものにして、それを速くします。そして、ステップ3に行くと、Shark(またはInstruments)を走らせて、その指針に従ってください。

関連する問題