Управление последовательностью

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

Оптимизируйте свои текстовые манипуляции

NSString и его различные подклассы обеспечивают огромную гибкость в том, как можно управлять текстом, но та гибкость прибывает в стоимость производительности. Если Ваше приложение часто управляет строками или очень интенсивными способами, Вы могли бы хотеть тщательно рассмотреть методы NSString, которые Вы используете. Вы могли бы также хотеть полагать, что запись Ваших собственных строковых утилит оптимизирует манипуляции, которые Вы делаете.

Если Вы хотите выполнить итерации по символам строки, одна из вещей, которые Вы не должны делать, использовать characterAtIndex: метод для получения каждого символа отдельно. Этот метод не разработан для повторного доступа. Вместо этого рассмотрите выборку символов одновременно с помощью getCharacters:range: метод и выполняющий итерации по байтам непосредственно.

Если Вы хотите искать строку определенные символы или подстроки, не выполняйте итерации через символы один за другим. Вместо этого используйте высокоуровневые методы такой как rangeOfString:, rangeOfCharacterFromSet:, или substringWithRange:, которые оптимизированы для поиска символов NSString. Вы могли бы также рассмотреть использование методов NSScanner для парсинга строкового содержания для подстрок. NSScanner также позволяет Вам проанализировать строку для численных значений и возвратить те значения как скалярные типы.

Поймите стоимость рисования строк

NSString обеспечивает удобные методы для рендеринга строк. Методы такой как drawAtPoint:withAttributes: и drawInRect:withAttributes: позвольте Вам нарисовать строковое содержание к определенному расположению в текущем представлении. Однако рисование строк этим способом может все еще подвергнуться существенному количеству издержек.

NSString использует текстовую систему Какао для рендеринга строкового содержания. Когда Вы просите, чтобы NSString представил себя впервые, он должен установить несколько текстовых системных объектов и затем разметить и нарисовать глифы в строке. Набор Приложения действительно пытается кэшировать текстовые системные объекты для предотвращения некоторых из этих затрат в будущем.

Сохраните свои текстовые объекты

При использовании текстовой системы Какао вообще необходимо понять объем работы, который она берет для рендеринга текста. Текстовый рендеринг требует, чтобы многочисленные вычисления удостоверились, что символы имеют правильный шрифт, интервал, позицию, и т.д. Сбор этих атрибутов и затем определение местоположения глифов, которые будут нарисованы, могут включить создание многочисленных объектов. При выбрасывании этих объектов после каждого использования Вы подвергаетесь значительной потере производительности каждый раз, когда Вы рисуете свой код. Большая часть этого штрафа может быть легко удалена путем кэширования объектов, которые Вы создаете.

Многие объекты в текстовой системе Какао могут быть установлены один раз и сохранены для будущего использования. Сохранение этих объектов может значительно улучшить текст, представляющий производительность во время последующих операций рисования.