方法setTextColor:range:在NSTextView上非常慢

时间:2015-01-31 16:52:53

标签: regex macos

我在Mac OS X中创建了一个简单的编辑器,而且我的编辑需要对代码进行一些突出显示,例如评论。

我正在使用正则表达式来查找我最初认为很慢的所有评论。事实证明,它确实令人惊叹。例如,对于387条评论,正则表达式需要"仅#34;找到它们的0.008404秒并返回NSRanges数组。

但这是灾难。当我尝试使用方法setTextColor:range:为我的文本设置不同的颜色时,它完成得非常慢。它需要额外的9.872964秒(对于我之前提到的那些387条评论),当评论数量增加时,它会变得非常快。

所以......有没有办法更快地做到这一点?或许NSAttributedString s?

1 个答案:

答案 0 :(得分:2)

我真的很抱歉,但是stackoverflow给了我类似问题的建议(我在搜索时没有找到)。

事实证明,您只需要告诉NSTextViews TextStorage您将开始进行一些编辑。完成后,您将提交这些更改。代码如下:

[textView.textStorage beginEditing];
// do some stuff here
[textview.textStorage endEditing];

现在我用456条评论运行代码,Regex需要0.013887秒,着色0.215761秒,这是惊人的下降!

无论如何,我希望有人会觉得有用。