Является ли метод addSubview NSView медленным по своей сути?(Какао OSX)
-
19-09-2019 - |
Вопрос
Я пытаюсь ускорить свой графический интерфейс, который загружается очень медленно, когда я загружаю большой проект (графический интерфейс представляет собой представление групп и подгрупп и состоит из множества представлений).В ходе этого процесса я смотрел, сколько времени требуется для выполнения определенных сегментов кода, и обнаружил, что вызов addsubview большую часть времени занимает от 10 до 20 миллисекунд.Подпредставление, на которое я смотрел, — это кнопка раскрытия.Мне интересно, является ли этот метод просто медленным по своей сути или здесь действует какой-то другой фактор?Зависит ли время, необходимое для добавления подпредставления, от сложности подпредставления или это не имеет значения?Кроме того, есть ли какой-нибудь другой метод, который можно использовать для добавления подпредставления, который может быть быстрее?
Решение
Вы можете попробовать -setSubviews:который принимает массив подпредставлений.Это может быть быстрее, чем вызов -addSubview:несколько раз сам.
В противном случае -addSubview:и -addSubview:position:relativeTo:являются единственными другими методами вставки подпредставлений.
Однако мне любопытно, почему для одного подпросмотра требуется 10–20 мс?Сколько подпредставлений вы пытаетесь добавить?
Возможно, существует альтернативная конструкция с использованием NSCell, которая может быть быстрее, но, не зная более подробной информации о том, чего вы пытаетесь достичь, это трудно понять.
Другие советы
Перестановка иерархии представлений — это не то, что вы обычно делаете очень часто.Вместо добавления и удаления подпредставлений вы можете скрывать и показывать их.