我正在開發一款iPhone應用程序,我們正在本地化爲英文版和日文版,以供我們初次發佈。我們經常呼叫NSLocalizedString()
加載適當的本地化字符串進行顯示。下次我們需要它們時,將實例變量中的本地化字符串保存起來通常會更好嗎?或者我在此處進行了微型優化,並且每次需要時都要重新加載字符串?我應該保存由NSLocalizedString()返回的字符串嗎?
5
A
回答
7
這是那些「它取決於」的答案之一。
調用NSLocalizedString涉及在包中執行查找。這些查找速度相當快,但不是免費的。無論是緩存這個返回值,還是調用NSLocalizedString方便,都取決於它的使用方式。
如果你傳遞的迴歸 文本框的像一個 的UILabel或UITableViewCell的那麼當你 先設置屬性只會發生 查找。
如果你在一個drawRect中 通話使用它則只會 當你的觀點必須 粉刷這可能是經常,偶爾 ,或從未發生過的查找。
如果您使用它在遊戲UI,其中 屏幕重繪每一幀 那麼幾個UI元素,這些 查找可能會發生數百次 每秒。
我會說,對於像#3這樣的東西,你應該開始緩存結果。
對於其他人,請以最方便的方式編寫它們,如果您的UI中存在性能問題,請使用工具來縮小原因。如果它是NSLocalizedString,則相應地優化它。
1
我懷疑你沒有太多的表現衝擊。 NSLocalizedString(鍵,評論)是轉換爲
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
沒有標杆宏,我不知道這有多貴,但我懷疑這是不是太糟糕了。我的感覺是,這不會成爲你的性能瓶頸,但你可以隨時運行Shark或樂器,並在設備上運行應用程序時自行查看。
7
微優化。首先讓它工作,然後把它做好,然後讓它快速。當你到達第3步時,運行鯊魚(或樂器),然後按照其指導。
相關問題
- 1. 我應該釋放由cStringUsingEncoding返回的字符串嗎?
- 2. iOS - NSLocalizedString只返回密鑰字符串
- 3. SharedPreferences不保存並返回字符串
- 4. 保存sql返回字符串
- 5. 由X509_NAME_oneline返回的自由字符串
- 6. 我應該保護賦給子程序的字符串嗎?
- 7. 安卓:保存gson.toJson()返回的字符串在我的SD卡
- 8. 我應該使用字符串作爲TypeScript中返回值的類型嗎?
- 9. 在getter方法中,我應該克隆要返回的字符串嗎?
- 10. 我應該返回一個python字符串的MIME類型
- 11. 我應該在Linux中釋放由getpwuid()返回的指針嗎?
- 12. 我應該關閉由Assembly.GetManifestResourceStream返回的流嗎?
- 13. 我們應該在資源中存儲格式字符串嗎?
- 14. .value返回字符串,直到我將它保存到變量
- 15. 我的幫助器方法應該返回一個字符還是字符串?
- 16. 訪問由fgetcsv返回的字符串
- 17. 由API返回的Unicode字符串不等於我的字典
- 18. 保存UTF8字符串由SqlBulkCopy的C#
- 19. 我應該緩存dlsym的返回值嗎?
- 20. 我應該緩存在openid中返回的XRDS文件嗎?
- 21. CoreData中保存的字符串返回<null>和字符串。爲什麼?
- 22. 的JavaScript的typeof應該是數量,但返回的字符串
- 23. nusoap可以返回字符串的字符串嗎?
- 24. SQL計算列評估數字應該返回字符串
- 25. 後臺bean的屬性,它應該返回一個字符串的HTML代碼返回空字符串
- 26. 什麼應該是返回xml字符串的方法的返回類型?
- 27. 是NSDateFormatter dateFromString:應該返回無效的字符串爲零?
- 28. 將實體保存到數據庫 - 我的Save方法應該返回保存的實體嗎?
- 29. 兩個字符串應該相等嗎?
- 30. asp.net webMethod必須返回字符串嗎?