私は最初のリリースで英語と日本語でローカライズしているiPhoneアプリを開発中です。 NSLocalizedString()
には、適切なローカライズされた文字列を表示して表示することがよくあります。私たちが必要とする次回のために、ローカライズされた文字列をインスタンス変数に保存する方が一般的には良いのですか?ここではマイクロ最適化していますか?NSLocalizedString()によって返された文字列を保存する必要がありますか?
答えて
これは「それに依存する」回答の1つです。
NSLocalizedStringを呼び出すには、バンドル内でルックアップを実行する必要があります。これらのルックアップはかなり高速ですが、無料ではありません。この戻り値をキャッシュするか、単にNSLocalizedStringを呼び出す利便性があるかは、その使用方法によって異なります。あなたが UILabelまたはUITableViewCellのようなものの テキストフィールドへの復帰を渡している場合は、 最初のプロパティを設定するときに 検索がのみ発生します
。あなたがのdrawRect コールでそれを使用している場合は、あなたのビューは、多くの場合、 頻度の低い、または決してすることができた を再描画する必要がある場合に
、その後のルックアップにのみ発生 ます。
あなたはこれらの 検索は数百倍の 秒ごとに起きている可能性が 画面は、いくつかのUI要素のために、その後すべてのフレーム を再描画されたゲームUIでそれを使用している場合。
#3のようなものでは、結果をキャッシュすることから始めるといいでしょう。
その他の場合は、最も便利な方法で記述し、UIにパフォーマンスの問題がある場合は、Instrumentsを使用して原因を絞り込みます。 NSLocalizedStringの場合はそれに応じて最適化します。
私はあなたがパフォーマンスヒットをあまり受けないと思っています。 NSLocalizedString(キー、コメント)ベンチマークがなけれ
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
に変換するマクロですが、私はこれがどのように高価な見当がつかないが、私はそれがあまりにも悪くはないと思います。私の気持ちは、これがあなたのパフォーマンスのボトルネックにはならないということですが、デバイスでアプリケーションを実行するときにはいつでもSharkやInstrumentsを実行して自分自身で確認できます。
マイクロ最適化。まずそれを動作させてから、それを正しいものにして、それを速くします。そして、ステップ3に行くと、Shark(またはInstruments)を走らせて、その指針に従ってください。
- 1. 電話番号は文字列または整数として保存する必要がありますか?
- 2. データベースに保存する前に文字列をトリミングする必要がありますか?
- 3. URLLoader.load呼び出しから返された文字列を処理する必要があります
- 4. DllImportによって返されたIntPtrが指す文字列のメモリを手動で解放する必要がありますか?
- 5. 割り当てのために文字列に文字列を追加する必要があります
- 6. PDO:文字列をエスケープする必要がありますか?
- 7. web.configに接続文字列を保護する必要はありますか?
- 8. asp.net webMethodは文字列を返す必要がありますか?
- 9. クラスから複数の文字列を返す必要があります
- 10. 文字列にコードが含まれている必要があります
- 11. イメージをデータベースに保存する必要がありますか?
- 12. ドッキングされたWebアプリケーションは、アップロードされたファイルをどこに保存する必要がありますか?
- 13. 私はASCII文字列に変換する必要がある文字列を、どのように変換する必要がありますか?
- 14. ユーザエージェントの文字列は、サーバのログに表示される文字列とまったく同じである必要がありますか?
- 15. どのように文字列がコンピュータでPythonによって保存されていますか?
- 16. イメージをデータベースまたはフォルダに保存する必要がありますか?
- 17. デバイスまたはサーバーにユーザーフレンドリストを保存する必要がありますか?
- 18. ビューモデルまたはドメインモデルをセッションに保存する必要がありますか?
- 19. JWTトークンを赤字で保存する必要がありますか?
- 20. CFAbsoluteTimeGetCurrent()によって返される結果は、デバイス間で正確である必要がありますか?
- 21. 静的マップに保存された文字列がオーバーライドされています
- 22. PHPエラー:クラス:: __ toString()は、文字列の値を返す必要があります
- 23. コンパイルの問題 - 文字列を返す必要があります
- 24. 外部化された文字列はstrings.xmlにある必要がありますか?
- 25. アクションメソッドの文字列パラメータにマークアップがバインドされるようにする必要があります
- 26. utf8_general_ciおよび/またはutf8_unicode_ciとして保存されたdb結果を返すときにutf8_decodeを使用する必要がありますか?
- 27. .NETのローカライズされた文字列の比較に '=='を使用する必要がありますか?
- 28. AnjularJs - オブジェクトを$ rootScopeに保存する必要があります
- 29. 文字列から数字を抽出する必要があります
- 30. ボタンには文字列を保存するプロパティがありますか?