Итак, как уже упоминалось в этом ответе и в заметках о выпуске iOS 4.0 , UIKit теперь имеет некоторые средства для поточно-ориентированного рисования:
Рисованиек графическому контексту в UIKit теперь является потокобезопасным.В частности:
- Подпрограммы, используемые для доступа к графическому контексту и управления им, теперь могут корректно обрабатывать контексты, находящиеся в разных потоках.
- Рисование строк и изображений теперь поточно-ориентировано.
- Использование объектов цвета и шрифта в нескольких потоках теперь безопасно.
Это здорово, но как вы его используете?
Насколько далеконасколько я знаю, в любой момент, когда вы не внутри -drawRect:
, вы можете рисовать только с помощью UIKit / UIGraphics, если вы создали собственный контекст с помощью UIGraphicsBeginImageContext()
или UIGraphicsPushContext()
, но эти функции не являются поточно-ориентированнымисогласно документации, -drawRect()
всегда вызывается в главном потоке.
Я предполагаю, что создание контекста изображения в главном потоке, а затем запуск метода фона было бы действительно плохой идеей из-за гонкиусловия в изобилии.
Итак, как мне использовать этот многопоточный материал для рисования на основе UIKit, который был представлен в iOS 4?Какие другие способы получения активного графического контекста UIKit я пропустил?
PS Я знаю, что я мог бы просто рисовать с использованием Core Graphics и покончить с этим.По разным причинам (устаревший код) я хотел бы продолжать использовать методы рисования на основе UIKit.