2009-03-01 30 views
5

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

7

Đâ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.

  1. 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.

  2. 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ờ.

  3. 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.

1

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ị.

7

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ó.

Các vấn đề liên quan