2009-03-01 16 views
5

Estoy trabajando en una aplicación de iPhone que estamos traduciendo en inglés y japonés para nuestra versión inicial. Con frecuencia llamamos al NSLocalizedString() para cargar la cadena localizada apropiada para visualizar. ¿Es generalmente mejor guardar las cadenas localizadas en variables de instancia para la próxima vez que las necesitamos, o estoy micro-optimizando aquí y debería simplemente volver a cargar la cadena cada vez que sea necesario?¿Debo guardar cadenas devueltas por NSLocalizedString()?

Respuesta

7

Esta es una de esas respuestas "depende".

Llamar a NSLocalizedString implica realizar una búsqueda en el paquete. Estas búsquedas son bastante rápidas pero no gratuitas. Si almacenar en caché este valor de retorno o simplemente tener la conveniencia de llamar a NSLocalizedString dependerá de cómo se use.

  1. Si va a ceder el retorno al campo de texto de algo así como un UILabel o UITableViewCell entonces la búsqueda sólo ocurrirá cuando se configura por primera la propiedad.

  2. Si se está usando en una llamada drawRect continuación, la búsqueda sólo se ocurrir cuando su vista necesita ser repintado que podría ser a menudo, con poca frecuencia o nunca.

  3. Si su uso en un juego en el que la interfaz de usuario la pantalla se vuelve a dibujar cada cuadro entonces por unos elementos de la interfaz estas búsquedas podrían estar sucediendo cientos de veces cada segundo.

Yo diría que para algo como # 3 debe comenzar con el almacenamiento en caché de los resultados.

Para los demás, escríbalos de la manera más conveniente y si tiene problemas de rendimiento en su UI, use los instrumentos para reducir la causa. Si es NSLocalizedString, optimícelo en consecuencia.

1

Sospecho que no se aprovecha demasiado de un golpe de rendimiento. NSLocalizedString (clave, comentario) es una macro que convierte a

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

Sin evaluación comparativa, no tengo idea de lo caro que es, pero sospecho que no es demasiado malo. Tengo la sensación de que esto no será un cuello de botella para el rendimiento, pero siempre puedes ejecutar Shark o Instruments y ver por ti mismo cuando ejecutas tu aplicación en el dispositivo.

7

Micro optimizando. Primero haz que funcione, luego hazlo bien, luego hazlo rápido. Y cuando llegue al paso 3, ejecute Shark (o Instruments), luego siga sus instrucciones.

Cuestiones relacionadas