Я должен сохранить строки, возвращенные NSLocalizedString ()?

Лично мне не нравится смешивать оценку на макро / препроцессорном уровне и тест на уровне компиляции.

Кажется, что нет стандартного способа сделать это на макроуровне, но здесь есть хаки: C ++ препроцессор __VA_ARGS__ количество аргументов

5
задан Don McCaughey 1 March 2009 в 23:11
поделиться

3 ответа

Это - один из тех, "он зависит" ответы.

Вызов NSLocalizedString вовлекает выполнение поиска в пакет. Эти поиски являются довольно быстрыми, но не бесплатными. Кэшировать ли это возвращаемое значение или просто иметь удобство вызова NSLocalizedString, будет зависеть от того, как это используется.

  1. При передаче возврата текстовому полю чего-то как UILabel или UITableViewCell затем, поиск только произойдет когда Вы первый набор свойство.

  2. При использовании его в вызове drawRect затем, поиск только произойдет, когда представление должно будет быть перекрашено, который мог быть часто, нечасто, или никогда.

  3. Если Ваше использование его в игре UI, где экран перерисовывается каждый кадр затем для нескольких элементов UI эти поиски, могло происходить сотни времен каждую секунду.

Я сказал бы, что для чего-то как № 3 необходимо запустить с кэширования результатов.

Для других запишите им в способе, которым это является самым удобным и если у Вас есть проблемы производительности в Ваших Инструментах использования UI для сужения причины. Если это - NSLocalizedString, затем оптимизируют его соответственно.

7
ответ дан 18 December 2019 в 12:02
поделиться

Я подозреваю, что Вы не получаете слишком много удара производительности. NSLocalizedString (ключ, комментарий) является макросом, который преобразовывает в

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

Без сравнительного тестирования я понятия не имею, насколько дорогой это, но я подозреваю, что это не слишком плохо. Мое чувство состоит в том, что это не будет узким местом производительности для Вас, но можно всегда выполнять Акулу или Инструменты и лично убеждаться при запуске приложения на устройстве.

1
ответ дан 18 December 2019 в 12:02
поделиться

Микрооптимизация. Сначала заставьте его работать, затем сделать его правом, затем сделать его быстро. И когда Вы добираетесь до шага 3, выполняете Акулу (или Инструменты), затем следуете за ее руководством.

7
ответ дан 18 December 2019 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: