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