我有一个子类NSTextView,我在一个单独的线程中操作(使用performSelectorOnMainThread:withObject:waitUntilDone :)使用选择器replaceCharactersInRange:withString:,setSelectedRange:和insertText:。我正在遇到文本闪烁和性能不佳,因为NSTextView会更新每个操作的显示。
有关如何控制显示器何时更新的任何建议,所以我只能在实际需要时更新它?我尝试使用各种组合setNeedsDisplay:NO(来自主要和后台线程,在我的更新之前和之后),这似乎被忽略了。
提前感谢能够提供一些见解的任何人。
答案 0 :(得分:3)
我认为你应该操纵文本视图的底层NSTextStorage
,而不是直接调用视图的事件相关方法。这是模型 - 视图 - 控制器架构的一个非常经典的例子:NSTextView
是视图,NSTextStorage
是模型。只要有可能,您希望直接操作模型,让控制器/视图层处理他们认为合适的视图更新。