Почему CGContextRef не является объектом? - PullRequest
1 голос
/ 23 сентября 2011

Разве не было бы намного больше смысла, если бы CGContextRef был реальным объектом? Теперь вам нужно дать контекст с ним, каждый раз, когда вы хотите добавить путь. Разве не намного лучше сказать: [context addPath: myPath]; вместо CGContextAddPath (контекст, myPath);

Это структура или с чем здесь дело? Кто-нибудь хочет разработать?

1 Ответ

4 голосов
/ 23 сентября 2011

Это может быть проще с точки зрения программиста, но отчасти это связано с производительностью. При выполнении графически насыщенного кода и важности времени рендеринга (что почти всегда), последнее, что вы хотите сделать, - это выделить много временных объектов. Это компромисс - производительность для удобочитаемости / удобства обслуживания.

Как отметил Мартин Уллрих, есть некоторые обёртки Objective-C для некоторых вещей Core Graphics, но действительно намного лучше знать, что происходит "под капотом", прежде чем использовать вещи Objective-C (которые будут проще, но чуть медленнее).

Кстати, эта медлительность, о которой я говорю, на самом деле является проблемой только тогда, когда вы много рисуете и хотите (или должны) поддерживать FPS / отзывчивость очень хорошими. Например, если вы рисуете сотни фигур и линий, вам нужно использовать CG напрямую. Если вы просто рисуете несколько фигур / изображений / текста, использование оберток Obj-C даст лишь незначительный удар по производительности.

...