Я сталкиваюсь с проблемой, когда мой NSTextView выполняет колоссальный объем работ по рисованию во время простоя. Чертеж запускается мигающим курсором. Это нормальное поведение, но объем выполняемой работы по рисованию чрезмерен. Если я переопределю shouldDrawInsertionPoint
, чтобы вернуть false, работа полностью остановится.
Насколько я могу судить, частота рисования не увеличилась, просто объем работы, необходимый для этого. Работа, выполняемая ЦП , не масштабируется с размером фрейма NSTextView, но с количеством текста в NSTextStorage. И по трассировке Instruments я вижу, что в основном это NSLayoutManager, выполняющий работу по макетированию и отрисовке текста. Это действительно удивило меня - оно, похоже, рисует текст, который не виден.
Я сузил условия до NSTextView с drawsBackground
, установленным в false, и wantsLayer
, установленным в true. Если я изменю какое-либо из этих свойств, процессор, необходимый для рисования мигающего курсора, уходит далеко вниз. Я могу обойти это, просто нарисовав фон, но я хотел бы лучше понять это.
Кто-нибудь знает, что случилось?