2009-03-01 40 views
5

我正在開發一款iPhone應用程序,我們正在本地化爲英文版和日文版,以供我們初次發佈。我們經常呼叫NSLocalizedString()加載適當的本地化字符串進行顯示。下次我們需要它們時,將實例變量中的本地化字符串保存起來通常會更好嗎?或者我在此處進行了微型優化,並且每次需要時都要重新加載字符串?我應該保存由NSLocalizedString()返回的字符串嗎?

回答

7

這是那些「它取決於」的答案之一。

調用NSLocalizedString涉及在包中執行查找。這些查找速度相當快,但不是免費的。無論是緩存這個返回值,還是調用NSLocalizedString方便,都取決於它的使用方式。

  1. 如果你傳遞的迴歸 文本框的像一個 的UILabel或UITableViewCell的那麼當你 先設置屬性只會發生 查找。

  2. 如果你在一個drawRect中 通話使用它則只會 當你的觀點必須 粉刷這可能是經常,偶爾 ,或從未發生過的查找。

  3. 如果您使用它在遊戲UI,其中 屏幕重繪每一幀 那麼幾個UI元素,這些 查找可能會發生數百次 每秒。

我會說,對於像#3這樣的東西,你應該開始緩存結果。

對於其他人,請以最方便的方式編寫它們,如果您的UI中存在性能問題,請使用工具來縮小原因。如果它是NSLocalizedString,則相應地優化它。

1

我懷疑你沒有太多的表現衝擊。 NSLocalizedString(鍵,評論)是轉換爲

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

沒有標杆宏,我不知道這有多貴,但我懷疑這是不是太糟糕了。我的感覺是,這不會成爲你的性能瓶頸,但你可以隨時運行Shark或樂器,並在設備上運行應用程序時自行查看。

7

微優化。首先讓它工作,然後把它做好,然後讓它快速。當你到達第3步時,運行鯊魚(或樂器),然後按照其指導。

相關問題