This is one of the "it depends" answers.
Calling NSLocalizedString involves performing a search in a bundle. These searches are fairly quick, but not free. Whether this return value should be cached or just using the NSLocalizedString call will depend on how it is used.
If you go back to a text field of something like UILabel or UITableViewCell, then the search will only happen when you first set the property.
If you use it in a drawRect call, then the search will be when your opinion should be which may be often, infrequently or never.
If you use it in the game’s user interface, the screen is redrawn every frame, then for several user interface elements these searches can occur hundreds of times per second.
I would say that for something like # 3 you should start by caching the results.
, , , , , . NSLocalizedString, .