У меня есть сетка изображений, которые загружаются из Интернета, но при прокрутке наблюдается некоторая задержка / заикание. Я использую асинхронный ASIHTTPRequest
для выполнения запросов, поэтому сама загрузка происходит в отдельном потоке, но поскольку UIKit не является поточно-ориентированным, после получения ответа NSData
я должен вызвать UIImage initWithData
в основной теме.
Профилирование показывает, что узкое место на сегодняшний день состоит из внутренних функций синтаксического анализа PNG, вызываемых UIImage initWithData
. Я заинтересован в том, чтобы сделать это в фоновом потоке, поэтому основной пользовательский интерфейс остается отзывчивым и меньше задержек.
Но я не уверен, как именно это сделать. Похоже, правильное направление - использовать CGImageRef
, поскольку Core Graphics является поточно-ориентированным, но я вижу только CGImageCreateWithPNGDataProvider
и CGImageCreateWithJPEGGDataProvider
, тогда как UIImage initWithData
поддерживает большой список типов изображений.
Я хочу что-то такое же, что и UIImage initWithData
, но не имеет проблем с безопасностью потоков.