2009-03-01 2 views
5

Sto lavorando a un'applicazione per iPhone che stiamo localizzando in inglese e giapponese per la nostra versione iniziale. Chiamiamo spesso NSLocalizedString() per caricare la stringa localizzata appropriata per la visualizzazione. Generalmente è meglio salvare le stringhe localizzate nelle variabili di istanza per la prossima volta che ne abbiamo bisogno, oppure sto ottimizzando qui e dovrei ricaricare la stringa ogni volta che è necessario?Devo salvare le stringhe restituite da NSLocalizedString()?

risposta

7

Questa è una di quelle risposte "dipende".

La chiamata a NSLocalizedString implica l'esecuzione di una ricerca nel pacchetto. Queste ricerche sono piuttosto veloci ma non gratuite. Se memorizzare questo valore restituito o semplicemente avere la comodità di chiamare NSLocalizedString dipenderà dal modo in cui viene utilizzato.

  1. Se si sta passando il ritorno al campo di testo di qualcosa di simile a un UILabel o UITableViewCell allora la ricerca si verifica solo quando si prima imposta la proprietà.

  2. Se lo si usa in una chiamata drawRect quindi la ricerca sarà solo accadere quando la visualizzazione ha bisogno di essere ridipinta che potrebbe essere spesso, raramente, o mai più.

  3. Se la vostra utilizzando in un gioco in cui interfaccia utente lo schermo viene ridisegnato ogni fotogramma poi per alcuni elementi dell'interfaccia utente questi ricerche potrebbe accadere centinaia di volte al secondo.

Direi che per qualcosa come # 3 si dovrebbe iniziare con il caching dei risultati.

Per gli altri, scriverli nel modo che è più conveniente e se si riscontrano problemi di prestazioni nell'interfaccia utente, utilizzare Strumenti per limitare la causa. Se è NSLocalizedString, ottimizzalo di conseguenza.

1

Ho il sospetto che non si prenda troppo di un successo in termini di prestazioni. NSLocalizedString (chiave, commentare) è una macro che converte in

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

Senza analisi comparativa, non ho idea di quanto sia caro questo è, ma ho il sospetto che non è troppo male. La mia sensazione è che questo non sarà un collo di bottiglia per le prestazioni, ma puoi sempre eseguire Shark o Instruments e vedere di persona quando esegui l'applicazione sul dispositivo.

7

Micro-ottimizzazione. Prima fallo funzionare, poi fallo bene, quindi fallo velocemente. E quando arrivi al punto 3, esegui Shark (o Strumenti), quindi segui la sua guida.