Tôi đang làm việc trên một ứng dụng iPhone mà chúng tôi đang bản địa hóa bằng cả tiếng Anh và tiếng Nhật để phát hành lần đầu. Chúng tôi thường gọi số NSLocalizedString()
để tải chuỗi địa phương thích hợp để hiển thị. Nói chung là tốt hơn để lưu các chuỗi đã bản địa hóa trong các biến mẫu cho lần tiếp theo chúng ta cần chúng hay tôi tối ưu hóa vi mô ở đây và tôi có nên tải lại chuỗi mỗi khi cần thiết không?Tôi có nên lưu chuỗi được NSLocalizedString() trả về không?
Trả lời
Đây là một trong những câu trả lời "phụ thuộc".
Gọi NSLocalizedString liên quan đến việc thực hiện tra cứu trong gói. Những tra cứu này khá nhanh nhưng không miễn phí. Cho dù cache giá trị trả lại này hay chỉ có sự tiện lợi của việc gọi NSLocalizedString sẽ phụ thuộc vào cách nó được sử dụng.
Nếu bạn đang chuyển sự trở lại với textfield của một cái gì đó giống như một UILabel hoặc UITableViewCell sau đó tra cứu sẽ chỉ xảy ra khi bạn đầu tiên thiết lập thuộc tính.
Nếu bạn đang sử dụng nó trong một cuộc gọi drawRect sau đó tra cứu sẽ chỉ xảy ra khi tầm nhìn của bạn cần phải được sơn lại mà có thể là thường xuyên, không thường xuyên, hoặc không bao giờ.
Nếu bạn sử dụng nó trong một giao diện người dùng trò chơi mà màn hình được vẽ lại mỗi khung sau đó cho một vài yếu tố giao diện người dùng những tra cứu có thể xảy ra hàng trăm lần mỗi giây.
Tôi sẽ nói rằng đối với một cái gì đó như # 3 bạn nên bắt đầu với bộ nhớ đệm kết quả.
Đối với những người khác, hãy viết chúng theo cách thuận tiện nhất và nếu bạn gặp vấn đề về hiệu suất trong giao diện người dùng, hãy sử dụng Công cụ để thu hẹp nguyên nhân. Nếu đó là NSLocalizedString thì tối ưu hóa nó cho phù hợp.
Tôi nghi ngờ rằng bạn không mất quá nhiều lượt truy cập hiệu suất. NSLocalizedString (key, bình luận) là một macro có thể chuyển đổi để
[[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
Nếu không có điểm chuẩn, tôi không có ý tưởng như thế nào đắt tiền này, nhưng tôi nghi ngờ nó không phải là quá xấu. Cảm giác của tôi là đây sẽ không phải là một nút cổ chai hiệu suất cho bạn, nhưng bạn luôn có thể chạy Shark hoặc Instruments và xem cho chính mình khi bạn chạy ứng dụng của bạn trên thiết bị.
Tối ưu hóa vi mô. Đầu tiên làm cho nó hoạt động, sau đó làm cho nó đúng, sau đó làm cho nó nhanh. Và khi bạn đến bước 3, chạy Shark (hoặc Instruments), sau đó làm theo hướng dẫn của nó.
- 1. iOS - NSLocalizedString chỉ trả lại chuỗi khóa
- 2. Với Razor View Engine mới, HtmlHelpers của tôi có nên trả về chuỗi hoặc IHtmlString không?
- 3. Có chấp nhận trả lại unmodifiableList hoặc tôi có nên trả về mảng không?
- 4. Tôi có nên đóng luồng được trả về bởi Assembly.GetManifestResourceStream không?
- 5. Tôi có nên chuyển đổi Markdown được lưu trữ sang HTML hay tôi nên lưu trữ HTML không?
- 6. Cách tìm các chuỗi chưa được dịch. NSLocalizedString()
- 7. Tôi có thể trả về một varchar (max) từ một thủ tục lưu sẵn không?
- 8. Tôi có nên trả về một mảng hoặc một bộ sưu tập từ một hàm không?
- 9. Tôi có nên trả về giá trị TRUE/FALSE từ một hàm C không?
- 10. Trong REST, tôi có nên trả về biểu diễn để đáp ứng với PUT không?
- 11. Tôi có nên trả về null hoặc ném một ngoại lệ không?
- 12. Thủ tục lưu trữ trả về một chuỗi?
- 13. thủ tục lưu trữ trả về không có gì
- 14. Tôi có nên mã hóa web.config trên lưu trữ được chia sẻ không?
- 15. NSLocalizedString tải chuỗi đôi khi, không phải luôn luôn
- 16. __unicode __() không trả về một chuỗi
- 17. Tôi có nên ném ArgumentNullException nếu một chuỗi trống không?
- 18. Chuỗi trả về Javascript về những gì nên là một bài kiểm tra boolean viết tắt
- 19. Chuỗi có độ dài bằng không được trả về từ String # split
- 20. Tôi có cần phải vứt bỏ bối cảnh đồ họa được trả về từ Component.getGraphics() không?
- 21. Tôi không hiểu gì về chuỗi getline?
- 22. Các thủ tục được lưu trữ có thể trả về một tập kết quả không?
- 23. Tôi có thể trả về một chuỗi bằng cú pháp @helper trong Razor không?
- 24. Nếu tôi ghi đè lên window.onerror trong javascript, tôi có nên trả về true hoặc false không?
- 25. Tôi có nên lo lắng về việc tiêm PHP nếu tôi không sử dụng MySQL không?
- 26. Tôi có nên sửa đổi nguyên mẫu của chuỗi không?
- 27. Mảng trả về của chuỗi
- 28. NSMutableArray containsObject trả về true, nhưng nó không nên
- 29. Tôi có cần trả về "kết xuất" trong Grails không?
- 30. LINQ để trả về chuỗi