我在Mac OS X中创建了一个简单的编辑器,而且我的编辑需要对代码进行一些突出显示,例如评论。
我正在使用正则表达式来查找我最初认为很慢的所有评论。事实证明,它确实令人惊叹。例如,对于387条评论,正则表达式需要"仅#34;找到它们的0.008404秒并返回NSRanges数组。
但这是灾难。当我尝试使用方法setTextColor:range:
为我的文本设置不同的颜色时,它完成得非常慢。它需要额外的9.872964秒(对于我之前提到的那些387条评论),当评论数量增加时,它会变得非常快。
所以......有没有办法更快地做到这一点?或许NSAttributedString
s?
答案 0 :(得分:2)
我真的很抱歉,但是stackoverflow给了我类似问题的建议(我在搜索时没有找到)。
事实证明,您只需要告诉NSTextViews TextStorage您将开始进行一些编辑。完成后,您将提交这些更改。代码如下:
[textView.textStorage beginEditing];
// do some stuff here
[textview.textStorage endEditing];
现在我用456条评论运行代码,Regex需要0.013887秒,着色0.215761秒,这是惊人的下降!
无论如何,我希望有人会觉得有用。