Pergunta

Eu estou trabalhando em um aplicativo para iPhone que estamos localizando tanto em Inglês e Japonês para o nosso lançamento inicial. Nós freqüentemente chamada NSLocalizedString() para carregar a cadeia adequada localizada para exibição. É geralmente melhor para salvar as cadeias localizadas em variáveis ??de instância para a próxima vez que precisar deles, ou estou micro-otimização aqui e devo apenas recarregar a seqüência de cada vez que é necessário?

Foi útil?

Solução

Este é um daqueles "depende" respostas.

Chamando NSLocalizedString envolve a execução de uma pesquisa no pacote. Estas pesquisas são bastante rápido, mas não é livre. Quer para armazenar em cache este valor de retorno ou apenas têm a conveniência de chamar NSLocalizedString vai depender de como ele é usado.

  1. Se você está passando o retorno ao textfield de algo como uma UILabel ou UITableViewCell então o lookup só ocorrerá quando você primeiro defina a propriedade.

  2. Se você estiver usando-lo em um drawRect chamar, em seguida, a pesquisa só irá acontecer quando a sua visão precisa ser repintado que poderia ser, muitas vezes, raramente, ou nunca.

  3. Se o seu usá-lo em um jogo onde UI a tela é redesenhada cada frame seguida por alguns elementos da interface estes pesquisas poderia estar acontecendo centenas de vezes a cada segundo.

Eu diria que algo como # 3 você deve começar com cache os resultados.

Para os outros, escrevê-los da maneira que for mais conveniente e se você tiver problemas de desempenho em seu uso UI Instruments para reduzir a causa. Se é NSLocalizedString seguida, otimizá-lo em conformidade.

Outras dicas

Micro-otimização. Primeiro fazê-lo funcionar, em seguida, fazê-lo direito, em seguida, torná-lo rápido. E quando você começa a etapa 3, execute Shark (ou Instruments), em seguida, segue a sua orientação.

Eu suspeito que você não tomar demasiado de um acerto de desempenho. NSLocalizedString (key, comentário) é uma macro que se converte em

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

Sem aferição, não tenho idéia de como caro este é, mas eu suspeito que não é muito ruim. Meu sentimento é que este não será um gargalo de desempenho para você, mas você sempre pode executar tubarão ou Instruments e veja por si mesmo quando você executar o aplicativo no dispositivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top