Во-первых, что касается производительности, тестировали ли вы ее?Apple предоставляет отличные инструменты для профилирования.С инструментами вы очень быстро узнаете, какая часть производительности поражает курсор, вызываемый изменением вызовов.Не угадайте, профиль.
Во-вторых, почему вы не используете события mouseEntered:
и mouseExited:
для изменения курсора, а не событие mouseMoved:
?Чаще всего курсор нужно менять только тогда, когда мышь входит или выходит из области отслеживания, верно?
Если вам нужен более точный контроль (например, я мог видеть, что это может бытьв случае, если вам нужно выбрать непрямоугольный объект) и если вызов смены курсора оказывается дорогостоящим (я очень в этом сомневаюсь), вам следует просто сохранить текущее состояние курсора и в mouseMoved:
В этом случае проверьте, нужно ли изменить курсор, а затем измените его, если это так.
Однако я подозреваю, что то, что вы уже делаете, окажется в порядке, поскольку, вероятно, NSCursor
аналогичная проверка, если вы вызываете [NSCursor set]
с тем же курсором, что и текущий курсор.