控制NSTextView更新以处理闪烁并提高速度

时间:2010-04-11 19:43:34

标签: objective-c cocoa nstextview

我有一个子类NSTextView,我在一个单独的线程中操作(使用performSelectorOnMainThread:withObject:waitUntilDone :)使用选择器replaceCharactersInRange:withString:,setSelectedRange:和insertText:。我正在遇到文本闪烁和性能不佳,因为NSTextView会更新每个操作的显示。

有关如何控制显示器何时更新的任何建议,所以我只能在实际需要时更新它?我尝试使用各种组合setNeedsDisplay:NO(来自主要和后台线程,在我的更新之前和之后),这似乎被忽略了。

提前感谢能够提供一些见解的任何人。

1 个答案:

答案 0 :(得分:3)

我认为你应该操纵文本视图的底层NSTextStorage,而不是直接调用视图的事件相关方法。这是模型 - 视图 - 控制器架构的一个非常经典的例子:NSTextView是视图,NSTextStorage是模型。只要有可能,您希望直接操作模型,让控制器/视图层处理他们认为合适的视图更新。