我遇到了一个问题,我的NSTextView在空闲时正在做大量工作图。图形由闪烁的光标触发。这是正常现象,但是绘制工作量过多。如果我重写shouldDrawInsertionPoint
以返回false,则工作将完全停止。
据我所知,绘制的频率并没有增加,只是做它所需的工作量。 CPU 所做的工作不会根据NSTextView框架的大小进行缩放,而是根据NSTextStorage中的文本量进行缩放。从Instruments跟踪中可以看到,主要是NSLayoutManager在完成布局和绘制文本的工作。这真的让我感到惊讶-它肯定似乎在绘制看不见的文本。
我将条件缩小到NSTextView,其中drawsBackground
设置为false,而wantsLayer
设置为true。如果我更改了这两个属性中的任何一个,绘制闪烁的光标所需的CPU就会下降。我可以仅通过绘制背景来解决此问题,但我想更好地理解这一点。
有人知道怎么回事吗?