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