Является ли метод addSubview NSView изначально медленным? (Cocoa OSX)


Я пытаюсь ускорить свой графический интерфейс, который загружается очень медленно, когда я загружаю большой проект (графический интерфейс представляет собой представление групп и подгрупп и состоит из многих представлений). Во время этого процесса я изучал, сколько времени занимает выполнение определенных сегментов кода, и обнаружил, что вызов addsubview занимает от 10 до 20 миллисекунд большую часть времени. Подвидом, на который я смотрел, является кнопка раскрытия. Мне интересно, является ли этот метод просто по своей природе медленным или их немного другой фактор здесь работает? Зависит ли время, необходимое для добавления подвида, от сложности подвида, или это не является фактором? Кроме того, есть ли какой-то другой метод, который можно использовать для добавления подвида, который может быть быстрее?

2 2

2 ответа:

Вы можете попробовать -setSubviews: который принимает массив вложенных представлений. Это может быть быстрее, чем вызов-addSubview: несколько раз самостоятельно.

В противном случае,- addSubview: и-addSubview:positioned:relativeTo: являются единственными другими методами для вставки вложенных представлений.

Мне любопытно, однако, почему 10-20 МС замедляются для одного подвида? Сколько подвидов вы пытаетесь добавить?

Возможно, есть альтернативный дизайн с использованием NSCell, который может быть быстрее, но без знать больше подробности о том, чего вы пытаетесь достичь, узнать сложно.

Перестановка иерархии представлений-это не то, что вы обычно делаете очень часто. Вместо добавления и удаления вложенных представлений их можно скрыть и отобразить.