Есть ли потеря производительности при повторном вызове UIGraphicsGetCurrentContext - PullRequest
3 голосов
/ 24 мая 2011

Я создаю UIView с пользовательской функцией drawRect. Это довольно сложный вид с множеством различных элементов, которые необходимо нарисовать. Я в основном разбил его на одну функцию для каждого элемента, который нужно нарисовать.

Что мне интересно, я должен передать свой CGContextRef, полученный из UIGraphicsGetCurrentContext(), в качестве параметра каждой функции, или я могу просто вызвать его в начале каждой функции? Последний вариант выглядит более аккуратно для меня, но мне интересно, есть ли большая потеря производительности?

Ответы [ 3 ]

4 голосов
/ 24 мая 2011

Это то же самое, если вы не сохраняете / не восстанавливаете контекст вокруг. В любом случае, получение контекста из этого метода, скорее всего, никогда не станет узким местом.

Я полагаю, что если вы не сохраняете и не восстанавливаете состояния, вы можете использовать UIGraphicsGetCurrentContext(). Однако, если вы действительно сохраняете состояние, вы должны передать это, так как ваш код будет легче читать.

Думаю, это вопрос стиля ...

3 голосов
/ 24 мая 2011

Ответ Пьера-Оливье хорош, и он просто решает ключевую проблему: не беспокойтесь об этом, пока вам не придется .Это случай преждевременной оптимизации.Прежде чем тратить много времени на принятие решения о том, стоит ли обойтись без CGContextRef, вы должны написать свое приложение, а затем посмотреть на производительность.Использование инструментов поможет вам определить, где ваши настоящие узкие места.Если окажется, что это вызывает проблемы (в чем я сильно сомневаюсь), вы можете оптимизировать их.

0 голосов
/ 24 мая 2011

только профиль после того, как все правильно и проверено.

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

...