UIImage
является частью UIKit, которая не является поточно-ориентированной. Например, метод imageNamed:
может повредить глобальный словарь имен и изображений, который класс UIImage
использует для кэширования.
Вы должны использовать Core Graphics, если вы хотите загрузить изображения в фоновом потоке.
Редактировать , чтобы ответить на ваш комментарий:
PNG-файлы можно загружать с помощью:
CGDataProviderRef source = CGDataProviderCreateWithURL((CFURLRef)url);
CGImageRef image = CGImageCreateWithPNGDataProvider(source, NULL, NO, kCGRenderingIntentDefault);
CFRelease(source);
A CGImage
является базовым базовым объектом и может храниться в NSArray
. Затем вы можете сделать из него UIImage
(конечно, в главном потоке):
[[UIImage alloc] initWithCGImage:image]