Является ли метод addSubview NSView по своей сути медленным? (Какао OSX) - PullRequest
2 голосов
/ 12 марта 2010

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

Ответы [ 2 ]

2 голосов
/ 13 марта 2010

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

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

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

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

2 голосов
/ 13 марта 2010

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

...