UITextView приписанный текст и подсветка синтаксиса

Background

Таким образом, в iOS 6 UITextView может принимать attringString, что может быть полезно для подсветки синтаксиса.

Я делаю несколько шаблонов регулярных выражений в-textView:shouldChangeTextInRange:replacementText: и часто мне нужно изменить цвет уже набранного слова. Я не вижу других вариантов, кроме сброса атрибута attributet, что занимает много времени.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    //A context will allow us to not call -attributedText on the textView, which is slow.
    //Keep context up to date
    [self.context replaceCharactersInRange:range withAttributedString:[[NSAttributedString alloc] initWithString:text attributes:self.textView.typingAttributes]];

    // […]

    self.textView.scrollEnabled = FALSE;

    [self.context setAttributes:self.defaultStyle range:NSMakeRange(0, self.context.length)];
    [self refresh]; //Runs regex-patterns in the context
    textView.attributedText = self.context;

    self.textView.selectedRange = NSMakeRange(range.location + text.length, 0);
    self.textView.scrollEnabled = TRUE;

    return FALSE;
}

Это работает хорошо на симуляторе, но на iPad 3 каждый-setAttributedText занимает несколько сотен миллисекунд.

Я отправил сообщение об ошибке в Apple, с просьбой изменить текст. Он был помечен как дубликат, поэтому я не вижу, что они говорят по этому поводу.

The question

The more specific question: Как я могу изменить цвет определенных диапазонов в UITextView, с большим многоцветным текстом, с достаточно хорошей производительностью, чтобы сделать это в каждомshouldReplaceText...?

The more broad question: Как вы делаете подсветку синтаксиса с помощью UITextView в iOS 6?

Ответы на вопрос(2)

Ваш ответ на вопрос