Недавно я переключился на NSLayoutConstraint
в своем приложении и внезапно заметил, что в некоторых представлениях мое приложение постоянно использует около 20% или более ЦП. Как я уже сказал, это происходит только тогда, когда некоторые виды отображаются на экране, и только после того, как я переключился на ограничения.
Запустив профилировщик времени, я заметил, что [NSView displayIfNeeded]
постоянно вызывается в этих представлениях, даже если ничего не происходит, никаких событий или взаимодействий с пользователем. Кроме того, если я изменю размер своего окна, я могу найти определенную конфигурацию, в которой загрузка ЦП снижается до нормальных значений. Если я верну окну его первоначальный размер, загрузка ЦП снова возрастет, и [NSView displayIfNeeded]
снова будет вызываться постоянно.
Кажется, что существуют определенные комбинации представлений и размеров, которые постоянно обновляются, даже если ограничения не падают (никаких признаков ошибки неудовлетворительных ограничений в консоли ).
Кто-нибудь испытал это? Или, по крайней мере, знает, как лучше отслеживать проблему?
После нескольких проб и ошибок я сузил его до этого вида
Это пользовательская ячейка в TableView. Если я заменю его обычной ячейкой, использование процессора вернется к норме. Я также проверил, что макет не является двусмысленным.