2015-06-14 2 views
0

меня возникают некоторые проблемы производительности с моим приложением:Чрезмерное использование NSView -> Альтернативы?

Он занимает более 2 секунд для загрузки -> Так сразу я пошел к Apple, документации

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaPerformance/Articles/CustomViews.html#//apple_ref/doc/uid/TP40001443-CJBJIFGC

В разделе под названием «Избегайте чрезмерного использования просмотров »внизу я очень смутился:

Я действительно добавляю много NSViews (угадаю, что я их использовал).

« Вместо этого нужно написать свои собственные классы, которые могут управляться с помощью более высокого уровня NSView подкласса. Розыгрыш код вашего NSView подкласса может быть оптимизирована для обработки пользовательских объектов. »

Мой вопрос:

Как я могу написать свои собственные классы, которым может управлять подкласс высшего уровня NSView -> любой пример?

Единственное, что я думал, было CALayer.

Добавляет CALayer подклассы лучше, чем добавлять NSView? Было бы немного увеличить мою плохую производительность?

Или что-то новое для изучения?

EDIT:

В настоящее время у меня есть NSView где я добавляющие 15 NSView как подвид к ним, и я могу добавить 15 CALayer с вместо: -/

ответ

2

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

CALayers более эффективны, чем UIViews, и рекомендуется избегать использования drawRect, если вам это не нужно, но прежде чем приступать к переписыванию, вам нужно знать, где ваше приложение фактически проводит свое время.

+1

Спасибо за ваш ответ. Можете ли вы предоставить более ясность в отношении «избегайте использования drawRect», если мне нужно только сплошное 'fillRect', я должен избегать' drawRect' и сделать 'NSView.layer.setBackgroundColor 'вместо этого? – ColdSteel

+0

Если все, что мне было нужно, это сплошной прямоугольник, я бы использовал CALayer с backGroundColor, а не UIView. Я бы использовал UIView, если мне нужны указатели gestureRecognizers или другие зависящие от вида вещи. Ваше предложение, вероятно, тоже хорошо. Однако, как я сказал в ответ: начните с инструментов и посмотрите, на какое время идет время. –

+0

Спасибо вам большое! – ColdSteel